Java 2实用教程第4版_第10章_输入流与输出流

上传人:无*** 文档编号:243823114 上传时间:2024-09-30 格式:PPT 页数:30 大小:869.50KB
返回 下载 相关 举报
Java 2实用教程第4版_第10章_输入流与输出流_第1页
第1页 / 共30页
Java 2实用教程第4版_第10章_输入流与输出流_第2页
第2页 / 共30页
Java 2实用教程第4版_第10章_输入流与输出流_第3页
第3页 / 共30页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,页,*,注意:开始用功了,!,第,页,Java,2实用教程(第4版),第10章,配合,例子源代码一起使用,Power point,制作:耿祥义 张跃平,输入、输出流,第,页,导读,主要内容,File,类,文件字节输入、输出流,文件字符输入、输出流,缓冲流,随机流,数组流,数据流,对象流,序列化与对象可隆,使用,Scanner,解析文件,文件锁,第,页,输入、输出流提供一条通道程序,可以使用这条通道读取源中的数据或把数据传送到目的地。把输入流的指向称作源,程序从指向源的输入流中读取源中的数据;而输出流的指向是数据要去的一个目的地,程序通过向输出流中写入数据把数据传送到目的地。,概述,第,页,10.1,File,类,File,对象主要用来获取文件本身的一些信息,不涉及对文件的读写操作。,创建一个,File,对象的构造方法有,3,个:,File(String filename);,File(String,directoryPath,String,filename);,File(File f,String filename);,第,页,10.1.1,文件的属性,File,类的下列方法获取文件本身的一些信息。,public String,getName,(),获取文件的名字。,public,boolean,canRead,(),判断文件是否是可读的。,public,boolean,canWrite,(),判断文件是否可被写入。,public,boolean,exits(),判断文件是否存在。,public long length(),获取文件的长度(单位是字节)。,public String,getAbsolutePath,(),获取,文件的绝对路径。,public String,getParent,(,),获取文件的父目录。,public,boolean,isFile,(),判断文件是否是一个普通文件,而不是目录。,public,boolean,isDirectroy,(),判断文件是否是一个目录。,public,boolean,isHidden,(),判断文件是否是隐藏文件。,public long,lastModified,(),获取文件最后修改的时间。,例子1,(,例子1,使用上述的一些方法,获取某些文件的信息),第,页,10.1.2,目录,1创建目录,public,boolean,mkdir,(),2列出目录中的文件,public String list(),用字符串形式返回目录下的全部文件。,public File,listFiles,(),用,File,对象形式返回目录下的全部文件。,public String,list(FilenameFilter,obj,),用字符串形式返回目录下的指定类型的所有文件。,public File,listFiles(FilenameFilter,obj,),用,File,对象形式返回目录下的指定类型所有文件。,上述两方法的参数,FilenameFilter,是一个接口,,该接口有一个方法:,public,boolean,accept(File dir,String name);,例子2,(,Example10_2.java,FileAccept.java,),例子2,列出当前目录(应用程序所在的目录)下全部,java,文件的名字),第,页,10.1.3,文件的创建与删除,当使用,File,类创建一个文件对象后,例如,File file=new,File(c:myletter,letter.txt,);,如果,c:myletter,目录中没有名字为,letter.txt,文件,,,文件对象,file,调用方法,public,boolean,createNewFile,();,可以在,c:myletter,目录中建立一个名字为,letter.txt,的文件,。,文件对象调用方法,public,boolean,delete(),可以删除当前文件,例如:,file.delete();,第,页,10.1.4,运行可执行文件,用,Runtime,类,声明一个对象(,Runtime,类在,java.lang,包,),Runtime,ec,;,然后使用该类的,getRuntime,(),静态方法创建这个对象:,ec,=,Runtime.getRuntime,();,ec,可以调用,exec(String command),方法,打开本地机的可执行文件或执行一个操作。,例子3,(,例子3,中,,Runtime,对象,打开,windows,平台上的记事本程序和浏览器),第,页,10.2,文件字节输入流,java.io,包提供了大量的流类,,Java,把,InputStream,抽象类的子类创建的流对象称作字节输入流、,OutputStream,抽象类的子类创建的流对象称作字节输出流,,Java,把,Reader,抽象类的子类创建的流对象称作字符输入流、,Writer,抽象类的子类创建的流对象称作字符输出流。,针对不同的源或目的地,,java.io,包为程序提供了相应的输入流或输出流,这些输入、输出流绝大部分都是,InputStream、OutputStream、Reader,或,Writer,的子类。,第,页,使用输入流通常包括4个基本步骤:,(1)设定输入流的源,(2)创建指向源的输入流,(3)让输入流读取源中的数据,(4)关闭输入流。,1,构造方法,使用,FileInputStream,类的下列构造方法创建指向文件的输入流。,FileInputStream(String,name);,FileInputStream(File,file);,参数,name,和,file,指定的文件,称为,输入流的源。,第,页,2,使用输入流读取字节,文件字节流可以调用从父类继承的,read,方法顺序地读取文件,只要不关闭流,每次调用,read,方法就顺序地读取文件中的其余内容,直到文件的末尾或文件字节输入流被关闭。,int,read(),读取单个字节的数据,返回字节值(0255整数),如果未读出字节就返回-1。,int,read(byte b),读取,b.length,个字节到字节数组,b,中,返回实际读取的字节数。如果到达文件的末尾,则返回-1。,int,read(byte b,int,off,int,len,),读取,len,个字节到字节数组,b,中,并返回实际读取的字节数目。如果到达文件的末尾,则返回-1,参数,off,指定从字节数组的某个位置开始存放读取的数据。,例子,4,使用文件字节流读取文件的内容,。,第,页,10.3,文件字节输出流,使用输出流通常包括4个基本步骤:,(1)给出输出流的目的地,(2)创建指向目的地的输出流,(3)让输出流把数据写入到目的地,(4)关闭输出流。,1,构造方法,使用,FileOutputStream,类的下列具有刷新功能的构造方法创建指向文件的输出流。,FileOutputStream(String,name);,FileOutputStream(File,file);,参数,name,和,file,指定,的文件称为输出流的,目的地,第,页,输出流的,wirie,方法以字节单位向目的地写数据。,void,write(int,n),向目的地写入单个字节。,void write(byte b),向目的地写入一个字节数组。,void write(byte,b,int,off,int,len,),从字节数组中偏移量,off,处取,len,个字节写到目的地。,FileOutputStream,流顺序地写文件,只要不关闭流,每次调用,write,方法就顺序地向目的地写入内容,直到流被关闭。,2,使用输出流写字节,例子,5,使用文件,字节输出流,写文件,a.txt,。,例子,5,首先使用具有刷新功能的构造方法创建指向文件,a.txt,的输出流、并向,a.txt,文件写入“新年快乐”,然后再选择使用不刷新文件的构造方法指向,a.txt,,,并向文件写入(即尾加)“,Happy New Year,”,3,关闭流,通过调用,close(),方法,可以保证操作系统把流缓冲区的内容写到它的目的地,即关闭输出流可以把该流所用的缓冲区的内容冲洗掉(通常冲洗到磁盘文件上)。,第,页,1,Reader,类提供的,read,方法以字符为单位顺序地读取源中的数据。,int,read():,int,read(char b):,int,read(char b,int,off,int,len,):,void close():,long skip(long,numBytes,):,2,Writer,流以字符为单位顺序地写文件,每次调用,write,方法就顺序地向目的地写入内容。,Writer,类有如下常用的方法。,void,write(int,n),:,向输出流写入一个字符。,void write(byte b):,向输出流写入一个字符数组。,void write(byte,b,int,off,int,length),:,从给定字符数组中起始于偏移量,off,处取,len,个字符写到输出流。,void close():,关闭输出流。,10.4,文件字符输入、输出流,例子6,使用文件字符输入、输出流将文件,a.txt,的内容尾加到文件,b.txt,中。,第,页,10.5,缓冲流,1,BufferedReader,和,BufferedWriter,类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。,构造方法:,BufferedReader(Reader,in);,BufferedWriter,(Writer out);,2.,BufferedReader,和,BufferedWriter,类读写文件的方法,:,readLine,(),读取文本行,write(String,s,int,off,int,len,),把字符串,s,写到文件中,newLine,();,向文件写入一个回行符,第,页,由英语句子构成的文件,english.txt,(,每句占一行):,The arrow missed the target.,They rejected the union demand.,Where does this road go to?,例子7,按行读取,english.txt,,,并在该行的后面尾加上该英语句子中含有的单词数目,然后再将该行写入到一个名字为,englishCount.txt,的文件中。程序运行效果如图10.,5,。,第,页,10.6,随机流,使用,RandomAccessFile,类来创建一个随机访问文件流。,RandomAccessFile,类创建的流的指向既可以作为源也可以作为目的地。,构造方法,:,RandomAccessFile(String,name,String mode);,RandomAccessFile(File,file,String mode);,相关方法:,seek(long a),定位,RandomAccessFile,流的读写位置,getFilePointer,(),获取流的当前读写位置,例子8(,把几个,int,型整数写入到一个名字为,tom.dat,文件,),readLine,(),方法,在读取含有非,ASCII,字符的文件时出现“乱码”现象的方法:,1,读取,String,str,=,in.readLine,();,2,用“,iso-8859-1,”,重新编码,byte b=str.getBytes(iso-8859-1);,3,使用当前机器的默认编码将字节数组转化为字符串,String content=new String(b);,例子9,(使用,readLine,(),读取文件),第,页,10.7,数组流,1,字节数组流,字节数组输入流,ByteA
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!