《文件和数据流》PPT课件.ppt
《《文件和数据流》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《文件和数据流》PPT课件.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 文件和数据流文件和数据流浙江工业大学浙江工业大学计算机学院计算机学院赵小敏赵小敏http:/210.32.200.159:9001主要内容l流的基本概念流的基本概念l字节流字节流l字符流字符流l文件类文件类l随机读写文件随机读写文件l对象序列化对象序列化7.1流的基本概念流的基本概念l数据流数据流是从源到目的的字节的有序序列,先进先出。是从源到目的的字节的有序序列,先进先出。l两种基本流两种基本流:InputStream(输入流输入流)和和OutputStream(输出流输出流)Java的标准输入输出的标准输入输出l标准输入输出是指在命令行方式下的输入输出标准输入输出是指在命令行
2、方式下的输入输出方式。方式。lJava通过通过System.in、System.out和和System.err来实现标准输入输出和标准错误输来实现标准输入输出和标准错误输出。出。l每当每当main方法被执行时方法被执行时,就自动生成就自动生成System.in、System.out和和System.err三个三个对象。对象。Java的标准输入输出的标准输入输出lSystem.in是字节输入流InputStream类的一个对象,其中有read方法从键盘读入数据:publicintread()throwsIOExceptionpublicintread(byteb)throwsIOExceptio
3、nlSystem.out是流PrintStream类的一个对象,其中print和println方法向屏幕输出数据。lSystem.err是流PrintStream类的一个对象,用于向屏幕输出错误信息。例1:输入输出的实例1.publicclassStdin_out2.publicstaticvoidmain(Stringargs)3.bytebuffer=newbyte200;4.inti,d=0,count=0;5.System.out.print(Inputastring:);6.try7.count=System.in.read(buffer);8.catch(Exceptione)9.
4、System.err.println(发生异常:发生异常:+e.toString();10.11.for(i=0;i=count-1;i+)12.System.out.print(char)bufferi);13.System.out.println(count);14.System.out.println(Inputtenchar:);15.for(i=1;i=10;i+)16.try17.d=System.in.read();18.System.out.println(char)d);19.catch(Exceptione)20.System.err.println(发生异常:发生异常:+
5、e.toString();21.22.23.Java的数据流的数据流lJava的数据流都在的数据流都在java.io包里包里lJava的数据流根据操作的数据流分为的数据流根据操作的数据流分为字节流字节流和和字字符流符流l字节流:流中的数据以字节流:流中的数据以8位字节为单位进行读写,位字节为单位进行读写,以以InputStream和和OutputStream为基础类。为基础类。l字符流:流中的数据以字符流:流中的数据以16位字节为单位进行读写,位字节为单位进行读写,以以Reader和和Writer为基础类。为基础类。7.2字节流字节流lInputStream和和OutputStream分别是字
6、节输分别是字节输入流和字节输出流的超类入流和字节输出流的超类lInputStream和和OutputStream提供许多用于提供许多用于字节输入输出的方法,包括:字节输入输出的方法,包括:1.数据的读取数据的读取2.数据的写入数据的写入3.标记位置标记位置4.获取数据量获取数据量5.关闭数据流关闭数据流字节输入流字节输入流InputStream类的层次结构类的层次结构InputStream 方法方法n三个基本read()方法intread()/读一个字节返回intread(byte)/将数据读入byte,返回读的字节数intread(byte,intoffset,intlength)n其它方法
7、voidclose()/关闭流。自顶向下关闭Filterstreamintavailable()/返回未读的字节数longskip(longn)/跳过n个字节booleanmarkSupported()/测试打开的流是否支持书签voidmark(int)/标记当前流,并建立int大小缓冲区voidreset()/返回标签出字节输出流字节输出流OutputStream类层次类层次OutputStream方法方法n三个基本的write()方法voidwrite(int)/写一个字节voidwrite(byte)/写一个字节数组voidwrite(byte,intoffset,intlength)n
8、其它方法voidclose()voidflush()/强行写字节文件输入输出流:字节文件输入输出流:FileInputStream和FileOutputStreamlFileInputStream和FileOutputStream实现了对文件的顺序访问,以字节为单位对文件进行读写操作,主要有这样几步:1.创建文件输入输出流的对象2.用文件读写方法读写数据3.关闭数据流。1、创建文件输入输出流对象、创建文件输入输出流对象(1)创建FileInputStream的对象,打开要读取数据的文件FileInputStream的构造方法是:1.publicFileInputStream(Stringnam
9、e)throwsFileNotFoundException2.publicFileInputStream(Filefile)throwsFileNotFoundExceptionn如下面语句可以创建文件的输入流对象,并打开要读取数据的文件D:/java/temp/mytext.txt:nFileInputStreamrf=newFileInputStream(“D:/java/temp/mytext.txt”);1、创建文件输入输出流对象、创建文件输入输出流对象(2)创建FileOutputStream的对象,打开要写入数据的文件FileOutputStream的构造方法是:1.publicF
10、ileOutputStream(Stringname)throwsFileNotFoundException2.publicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException3.publicFileOutputStream(Filefile)throwsFileNotFoundExceptionn其中:其中:name是要打开的文件名,是要打开的文件名,file是文件类是文件类File的的对象。如下面语句可以创建文件的输出流对象,并打对象。如下面语句可以创建文件的输出流对象,并打开要写入数据的文件开要写入数据
11、的文件D:/java/temp/mytext.txt:nFileOutputStreamwf=newFileOutputStream(“D:/java/temp/mytext.txt”);2、对文件进行读写的方法、对文件进行读写的方法(1)用用read方法读取文件的数据方法读取文件的数据1.publicintread()throwsIOException/返回从返回从文件中读取的一个字节。文件中读取的一个字节。2.publicintread(byteb)throwsIOException3.publicintread(byteb,intoff,intlen)throwsIOException/
12、返回读取的字节数返回读取的字节数,若若b的长度为的长度为0,返回,返回0。2、对文件进行读写的方法、对文件进行读写的方法(2)用用write方法将数据写入文件方法将数据写入文件1.publicvoidwrite(intb)throwsIOException/向文件写入一个字节,向文件写入一个字节,b是是int类型,所以将类型,所以将b的低的低8位写入位写入2.publicvoidwrite(byteb)throwsIOException3.publicvoidwrite(byteb,intoff,intlen)throwsIOException/将字节数组写入文件,将字节数组写入文件,其中其中
13、off是是b中的起始位置,中的起始位置,len是写入的最大长度。是写入的最大长度。3、字节文件流的关闭、字节文件流的关闭l当读写操作完毕时,要关闭输入或输出流,释放当读写操作完毕时,要关闭输入或输出流,释放相关的系统资源。相关的系统资源。l如果发生如果发生I/O错误,抛出错误,抛出IOException异常。异常。l关闭数据流的方法是:关闭数据流的方法是:publicvoidclose()throwsIOException例例2:读取文件内容并显示在屏幕:读取文件内容并显示在屏幕1.importjava.io.*;2.publicclassFileIn3.publicstaticvoidmai
14、n(Stringargs)4.try5.FileInputStreamrf=newFileInputStream(H:/java/temp/mytext.txt);6.intb;7.while(b=rf.read()!=-1)8.System.out.print(char)b);9.rf.close();10.catch(IOExceptionie)11.System.out.println(ie);12.catch(Exceptione)13.System.out.println(e);14.15.16.例例3:复制文件:复制文件1.importjava.io.*;2.publicclass
15、FileIn_Out3.publicstaticvoidmain(Stringargs)4.try5.FileInputStreamrf=newFileInputStream(D:/java/temp/file1.txt);6.FileOutputStreamwf=newFileOutputStream(D:/java/temp/file2.txt);7.byteb=newbyte512;8.intcount=-1;9.while(count=rf.read(b,0,512)!=-1)10.wf.write(b,0,count);11.12.rf.close();13.wf.close();1
16、4.15.catch(IOExceptionie)16.System.out.println(ie.toString();17.18.catch(Exceptione)19.System.out.println(e.toString();20.21.22.7.3字符流字符流l类类Reader是字符输入流的抽象超类,其提供的方是字符输入流的抽象超类,其提供的方法与法与InputStream类似,只是将基于类似,只是将基于Byte的参数改的参数改为基于为基于Char。l类类Writer是字符输出流的抽象超类,其提供的方法是字符输出流的抽象超类,其提供的方法与与OutputStream类似,只是将基
17、于类似,只是将基于Byte的参数改的参数改为基于为基于Char。lReader和和Writer类实现字节和字符间的自动转换。类实现字节和字符间的自动转换。l每一个核心输入、输出流,都有相应的每一个核心输入、输出流,都有相应的Reader和和Writer版本。版本。Reader的类层次结构的类层次结构Reader的基本方法的基本方法intread();/读单个字符intread(charcbuf);/读字符放入数组中intread(charcbuf,intoffset,intlength);/读字符放入数组的指定位置voidclose()/关闭流。longskip(longn)/跳过n个字符bo
18、oleanmarkSupported()/测试打开的流是否支持书签voidmark(int)/标记当前流,并建立int大小缓冲区voidreset()/返回标签出booleanready()/测试当前流是否准备好进行读Writer的类层次结构的类层次结构Writer的基本方法的基本方法intwrite(intc);/写单个字符写单个字符intwrite(charcbuf);/写字符数组写字符数组intwrite(charcbuf,intoffset,intlength);intwrite(Stringstr);intwrite(Stringstr,intoffset,intlength);vo
19、idclose()voidflush()/强行写强行写字符文件输入输出流:字符文件输入输出流:FileReader和和FileWritelFileReader和和Filewriter类用于字符文件的输入类用于字符文件的输入和输出和输出l读写文件的过程:读写文件的过程:1.先创建对象打开文件先创建对象打开文件2.然后用读写方法从文件中读取数据或将数据写然后用读写方法从文件中读取数据或将数据写入文件入文件3.最后关闭数据流。最后关闭数据流。1、创建字符流文件对象,打开文件、创建字符流文件对象,打开文件l创建FileReader或Filewriter对象,打开要读写的文件lFileReader的构造
20、方法:publicFileReader(Stringfilename)publicFileReader(Filefile)lFileWriter的构造方法:publicFlieWriter(Stringfilename)publicFilewriter(Filefile)2、字符文件流的读写、字符文件流的读写l用从超类继承的read和write方法可以对打开的文件进行读写l读取文件数据的方法:intread()throwsIOExceptionintread(charb)throwsIOExceptionintread(charb,intoff,intlen)throwsIOException
21、l数据写入到文件的方法:voidwrite(charb)throwsIOExceptionvoidwrite(charb)throwsIOExceptionvoidwrite(charb,intoff,intlen)throwsIOException3、字符文件流的关闭、字符文件流的关闭l对文件操作完毕要用close方法关闭数据流。publicvoidclose()throwsIOException例例5:从键盘输入一行文字,写入文件从键盘输入一行文字,写入文件file3.txt中中1.importjava.io.*;2.publicclassFilecharOut3.publicstatic
22、voidmain(Stringargs)4.charc=newchar512;5.byteb=newbyte512;6.intn,i;7.try8.FileWriterwf=newFileWriter(file3.txt);9.n=System.in.read(b);10.for(i=0;in;i+)11.ci=(char)bi;12.wf.write(c);13.wf.close();14.15.catch(IOExceptione)16.System.out.println(e);17.18.19.字符缓冲流字符缓冲流:BufferedReader和和BufferedWriterlBuff
23、eredReader和和BufferedWriter类以缓冲区方类以缓冲区方式对数据进行输入输出。式对数据进行输入输出。1.BufferedReader用于字符缓冲输入,构造方法如用于字符缓冲输入,构造方法如下:下:publicBufferedReader(Readerin)publicBufferedReader(Readerin,intsz)其中:其中:in为超类为超类Reader的对象,的对象,sz为用户设定的为用户设定的缓冲区大小。缓冲区大小。2.BufferedWriter类类lBufferedwriter用于字符缓冲流输出,构造方法为:publicBufferedWriter(Wr
24、iterout)publicBufferedwriter(Writerout,intsz)其中:out为超类Writer的对象,sz为用户设定的缓冲区大小。例例6:从键盘输入文字存入文件,再读出加上行号后打印在屏幕:从键盘输入文字存入文件,再读出加上行号后打印在屏幕1.importjava.io.*;2.publicclassBufferDemo3.publicstaticvoidmain(Stringargs)4.Stringf=f.txt;5.Stringstr=;6.inti=0;7.try8.BufferedReaderkeyIn=newBufferedReader(newInputS
25、treamReader(System.in);9.BufferedWriterbw=newBufferedWriter(newFileWriter(f);10.BufferedReaderbr=newBufferedReader(newFileReader(f);11.System.out.println(Pleaseinputfiletext:);12.while(!(str=keyIn.readLine().equals(exit)13.bw.write(str,0,str.length();14.bw.newLine();15.16.bw.close();17.while(str=br.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件和数据流 文件 数据流 PPT 课件
限制150内