资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,9,讲,Java,的输入输出流,9.1,流概念,9.2,Java,用于输入输出流的类,9.3,数据流的使用,1,9.3.2,使用字节流顺序读,/,写文件,2,1.,FileInputStream,类的构造方法,FileInputStream,类是,InputStream,类的子类。,FileInputStream,类的两种构造方法:,1,),FileInputStream,(,String name,),建立一个文件输入流从指定的,File,对象读取,参数:,name,为与系统有关的文件名,FileInputStream,fin1=new,FileInputStream(“d:/jsp/jsp.txt,”),9.3.2,使用字节流顺序读,/,写文件,3,2,),FileInputStream,(,File file,),参数:,file,为被打开用于读取的文件,File,file,=new,File(“C:/jsp/jsp.txt,”);,FileInputStream,fin1=new,FileInputStream(file,);,注:,使用以上两种构造方法时,如果文件没找到,会抛出,FileNotFoundException,异常。,9.3.2,使用字节流顺序读,/,写文件,1.,FileInputStream,类的构造方法,4,1,、,public,int,read(),从输入流中读取,1,个字节的数据,返回值为读入字节的,ascII,码,;,返回值为,-1,时,表明到了文件末尾,2,、,public,int,read(byte,b),从输入流中读取,b.length,个字节的数据到字数组,b,中,返回值为读入字节数组的数据个数;,返回值为,-1,时,表明到了文件末尾而无更多数据,2.,FileInputStream,类的常用方法,9.3.2,使用字节流顺序读,/,写文件,5,3,、,public,int,available(),该方法返回可以从文件输入流中读取的字节的数目,4,、,public void close(),关闭文件输入流并释放任何与这个流相联系的系统资源,9.3.2,使用字节流顺序读,/,写文件,2.,FileInputStream,类的常用方法,6,3.,FileOutputStream,类的构造方法,FileOutputStream,类是,OutputStream,类的子类。,FileOutputStream,类的两种构造方法:,1,),FileOutputStream,(,String name,),建立一个文件输出流把输出写入,File,对象,参数:,name,为与系统有关的文件名,FileOutputStream,fout1=new,FileOutputStream(“C:/jsp/jsp.txt,”),9.3.2,使用字节流顺序读,/,写文件,7,3.,FileOutputStream,类的构造方法,2,),FileOutputStream,(,File file,),参数:,file,为被打开用于写输出的文件,File,afile,=new,File(“C:/jsp/jsp.txt,”);,FileOutputStream,fout1=new,FileOutputStream(afile,);,注:,使用以上两种构造方法时,如果文件没找到,会抛出,FileNotFoundException,异常;也可能抛出,SecurityException,异常。,9.3.2,使用字节流顺序读,/,写文件,8,4.,FileOutputStream,类的常用方法,1,、,public void,write(byte,b),向输出流中写入,b.length,个字节的数据,9.3.2,使用字节流顺序读,/,写文件,2,、,public void close(),关闭文件输出流并释放任何与这个流相联系的系统资源,9,在输入与输出时都有可能发生异常,所以程序必须使用一个,catch,(,捕获)块检测并处理这个异常。,try,FileInputStream,fin=new,FileInputStream(“myfile.txt,”);,catch(IOException,e),System.out.println(“File,read error:“+e);,10,9.3,数据流的使用,1.,如何使用文件流:,例题:将一个文件的内容拷贝到另一个文件。,11,字节流不能直接操作,Unicode,字符。,所有字符输入流都是,Reader,(,字符输入流)抽象类的子类,而所有字符输出流都是,Writer,(,字符输出流)抽象类的子类。,9.3.3,使用字符流顺序读,/,写文件,12,1.,FileReader,和,FileWriter,类,FileReader,类的两种构造方法:,1)FileReader(String name);,2)FileReader(File file);,FileWriter,类的两种构造方法:,1,),FileWriter,(,String name,);,2,),FileWriter,(,File,afile,);,3,),FileWriter,(,String name,,,boolean,append,);,4,),FileWriter,(,File,afile,,,boolean,append,);,9.3.3,使用字符流顺序读,/,写文件,13,int,read(),int,read(char b),void close(),9.3.3,使用字符流顺序读,/,写文件,2.,FileReader,类的常用方法,14,void,write(char,b),void close(),3.,FileWriter,类的常用方法,9.3.3,使用字符流顺序读,/,写文件,15,4.,BufferedReader,和,BufferedWriter,类,FileReader,流经常和,BufferedReader,流配合使用;,FileWriter,流经常和,BufferedWriter,流配合使用。,BufferedReader,流可以使用,public String,readeLine,(),读取一行字符串;,例:,FileReader,fR,=new,FileReader(“d:/t.txt,”);,BufferedReader,bR,=new,BufferedReader(fR,);,String s=,bR.readLine,();,9.3.3,使用字符流顺序读,/,写文件,16,4.,BufferedReader,和,BufferedWriter,类,BufferedWriter,流方法:,void write,(,String s,)将字符串,s,写入文件。,flush(),方法可以确保数据缓冲器中的数据确实被写到实际的输出流。,例:,FileWriter,fW,=new,FileWriter(“c:/t.txt,”);,BufferedWriter,bW,=new,BufferedWriter(fW,);,bW.write,(,你好!,);,bW.flush,();,9.3.3,使用字符流顺序读,/,写文件,17,9.3,数据流的使用,2.,如何使用文件流:,例题:,在,d:temp,下建立,temp.txt,利用,BufferedWriter,对象向文件输入字符,“,你好”,利用,BufferedReader,对象把,temp.txt,文件中的内容读出,18,使用文件流实现简单的留言板:,留言信息由作者,标题与留言内容三个部分组成。,通过标准输入流,System.in,获取用户输入的三部分信息,使用,BufferedWriter,将留言信息保存在,d:message.txt,文件中。,使用,BufferedReader,将留言信息逐行读出。,9.3,数据流的使用,19,提示:,1,、存入文件的每条留言的结构为:,”,author&title&contentn,”,2,、通过,BufferedReader,类的,readLine,(),方法读取出留言后,使用,StringTokenizer,类对,1,中的留言结构进行分析,通过,&,字符析取出留言的三个部分,分别显示。,3,、如何为每条留言编号?如何将新留言插入文件尾部,(,追加记录,),?,20,课堂练习,定义一个类实现银行帐户的概念,包括的变量有,帐号,和,存款余额,,包括的方法有,存款,、,取款,、,查询余额,、”显示帐号”以及存储功能。定义主类,创建帐户类的对象,并完成相应操作,要求能存储储户历史信息。,21,
展开阅读全文