JAVA-IO流学生PPT课件_第1页
JAVA-IO流学生PPT课件_第2页
JAVA-IO流学生PPT课件_第3页
JAVA-IO流学生PPT课件_第4页
JAVA-IO流学生PPT课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-,1,Java流,-,2,本节主要内容,流的概述流的分类InputStream/OutputStreamReader/Writer流的几种典型流向RandomAccessFile的用法,-,3,I/O流概述,为进行数据的输入/输出操作,Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream)。Stream是从起源(source)到接收(sink)的有序数据java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能。按照流的方向分两种基本的流:输入流和输出流输入流:只能从中读取字节数据,而不能向其写出数据输出流:只能向其写入字节数据,而不能从中读取数据按照流所处理的数据类型划分,可以分为:字节流:用于处理字节数据(8个bit)包括InputStream/OutputStream。字符流:用于处理Unicode字符数据(16个bit)。包括Writer/Reader,-,4,节点流和处理流,按照流的角色划分,分为节点流和处理流可以从/向一个特定的IO设备(如磁盘、网络)读/写数据的流,称为节点流。节点流也被称为低级流。例如:InputStream和Reader的子类都有read()的方法,OutputStream和Writer的子类都有write()的方法,用于读取/写入一个字节或字节数组.但是在实际使用中很少使用单一流类产生的输入/输出流.而是使用这两个方法给其他的流类提供数据,数据源,程序,数据源,程序,实现对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读/写功能的流,称为处理流。处理流也被称为高级流。,-,5,InputStream/OutputStream,InputStream/OutputStream用于处理字节数据。它们读/写流的方式都是以字节为单位进行的。,-,6,InputStream基本方法,三个基本的read方法:intread():读取一个字节,并将它返回。intread(bytebuffer):将数据读入一个字节数组,同时返回读取的字节数。intread(bytebuffer,intoffset,intlength):将数据读入一个字节数组,放到数组的offset指定的位置开始,并用length来指定读取的最大字节数。注意:以上三个方法在读取到文件末尾时,都返回-1.可以用来判断是否全部读取文件其它方法:voidclose():关闭流。intavailable():返回可以从中读取的字节数。longskip(longn):在输入流中跳过n个字节,将实际跳过的字节数返回。booleanmarkSupported():判断流是否支持标记功能。voidmark(intreadlimit):在支持标记的输入流的当前位置设置一个标记。voidreset():返回到流的上一个标记。注意必须流支持标记功能。,-,7,常见InputStream类,低级InputStream类(节点流):InputStream:所有字节流的超类,定义了很多用于处理输入流的方法,是个抽象类ByteArrayInputStream:为读取字节数组设计的流,用于从文件中读取二进制数据PipedInputStream:管道流,FileInputStream:用于读取文件中的信息FilterInputStream:继承自InputStream,能将一个流连接到另一个流的末端,将两个流连接起来高级InputStream类(处理流):DataInputStream:可以从低级流中读取简单数据和String类型的数据.这样,可以将底层的读取细节隐藏起来,而直接处理简单类型和String类型的数据BufferedInputStream:提供缓冲能力的字节输入流,-,8,InputStream类层次,InputStream,FileInputStream,StringBufferInputStream,ByteArrayInputStream,节点流,处理流,ObjectInputStream,PipedInputStream,SequenceInputStream,FilterInputStream,DataInputStream,PushbackInputStream,BufferedInputStream,LineNumberInputStream,-,9,InputStream例子(示例10-1),bytebuff=newbyte1024;intn;FileInputStreamfis=null;tryfis=newFileInputStream(“C:a.txt”);while(n=fis.read(buff)!=-1)System.out.write(buff,0,n);catch(FileNotFoundExceptione)System.out.println(没有找到文件);System.exit(1);,-,10,OutputStream基本方法,三个基本的write方法:voidwrite(intc)voidwrite(bytebuffer)voidwrite(bytebuffer,intoffset,intlength)其它方法voidclose()voidflush():将缓冲中的字节发送到流中,同时清空缓冲区,-,11,OutputStream类,低级OutputStream,用来向设备中写入字节流OutputStream:所有字节输出流的基类ByteArrayOutputStream:按字节数组方式向设备中写入字节流的类PipedOutputStream:管道输出流高级OutputStreamDataOutputStream:可以向低级流中写入简单数据和String类型的数据.这样,可以将底层的写入细节隐藏起来,而直接处理简单类型和String类型的数据BufferedOutputStream:提供缓冲能力的字节输出流,-,12,OutputStream类层次,OutputStream,FileOutputStream,FilterInputStream,ByteArrayOutputStream,PipedOutputStream,节点流,处理流,ObjectOutputStream,DataOutputStream,PrintStream,BufferedOutputStream,-,13,OutputStream例子(示例10-2),FileOutputStreamout;/声明一个PrintStream流PrintStreamp;tryout=newFileOutputStream(myfile.txt);p=newPrintStream(out);p.println(面朝大海,春暖花开);p.close();catch(Exceptione)System.err.println(Errorwritingtofile);,-,14,通过Stream拷贝文本文件例子(示例10-3),通过FileInputStream和FileOutputStream,实现从一个文本文件拷贝内容到另一个文件的例子通过FileInputStream从源文本文件中读出数据,然后通过FileOutputStream写入到另外一个文本文件中。使用高级流(BufferedInputStream/BufferedOutputStream)对低级流进行包装,-,15,Reader/Writer,Reader/Writer处理的是字符类型的数据。它处理流的方式是以字符为单位进行的。Reader/Writer和InputStream/OutputStream一样,也分为节点流(低级流)和处理流(高级流)。Reader和InputStream一样,用于从流中读取数据。它和InputStream的区别在于,InputStream以字节为单位操作流,而Reader以字符为单位操作流。,-,16,Reader常用方法,读取方法:intread():用于从流中读出一个字符,并将它返回。intread(charbuffer):将从流中读出的字符放到字符数组buffer中,返回读出的字符数。intread(charbuffer,intoffset,intlength):将读出的字符放到字符数组的指定offset开始的空间,每次最多读出length个字符。其他方法:voidclose():关闭Reader流。booleanready():判断流是否已经准备好被读取。skip(longn):跳过指定的n个字符。booleanmarkSupported():和InputStream中的markSupported方法类似。voidmark(intreadAheadLimit):和InputStream中的mark方法类似。voidreset():和InputStream中的reset方法类似。,-,17,Reader相关类,低级Reader类:CharArrayReader:StringReaderPipedReaderFileReader高级Reader类BufferedReaderInputStreamReaderLineNumberReader,-,18,Reader类层次,Reader,BufferedReader,StringReader,CharArrayReader,InputStreamReader,PipedReader,FilterReader,FileReader,PushbackReader,LineNumberReader,节点流,处理流,-,19,Reader例子(示例10-4),FileReaderfr=newFileReader(C:/nos/tmp/mydata.txt);BufferedReaderbr=newBufferedReader(fr);Stringrecord=newString();while(record=br.readLine()!=null)recCount+;System.out.println(Line+recCount+:+record);,-,20,InputStreamReader,InputStreamReader能将字节流转换为一个Reader,即能将字节流转换为字符流publicstaticvoidreadRile()tryInputStreamReaderisr=newInputStreamReader(newFileInputStream(c:a.txt);BufferedReaderbufferedReader=newBufferedReader(isr)Stringstr=;while(str=bufferedReader.readLine()!=null)System.out.println(str);catch(FileNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();,-,21,CharArrayReader,从内存的字符串数组中读取字符,它的数据源是一个字符数组,它把字符数组类型转换为Reader类型:publicstaticvoidreadRile()chararrays=a,你,好,啊,t;CharArrayReaderreader=newCharArrayReader(arrays);inti=0;trywhile(i=reader.read()!=-1)System.out.print(char)i);catch(IOExceptione)/TODO自动生成catch块e.printStackTrace();reader.close();,-,22,StringReader,把String类型转换为Reader类型publicstaticvoidreadRile()Stringstr=“经费来的快速家法律监督是分机离开收到n将发了开赛发了看见的说n发觉脸上开发介绍两分巨大胜利n;StringReaderreader=newStringReader(str);inti=0;trywhile(i=reader.read()!=-1)System.out.print(char)i);catch(IOExceptione)e.printStackTrace();reader.close();,-,23,Writer常用方法,写入方法:voidwrite(intc):将参数c的低16位组成字符写入到流中。voidwrite(charbuffer):将字符数组buffer中的字符写入到流中。voidwrite(charbuffer,intoffset,intlength):将字符数组buffer中从offset开始的length个字符写入到流中。voidwrite(Stringstring):将string字符串写入到流中。voidwrite(Stringstring,intoffset,intlength):将字符string中从offset开始的length个字符写入到流中。其他方法:voidclose():和OutputStream的close方法类似。voidflush():和OutputStream的flush方法类似。,-,24,Writer相关类,低级Writer类:CharArrayWriterStringWriterPipedWriterFileWriter高级Writer类:BufferedWriterOutputStreamWriterPrintWriter:将流转换为文本,-,25,Writer类层次,Writer,StringWriter,CharArrayWriter,PipedWriter,OutputStreamWriter,FileWriter,节点流,处理流,FilterWriter,BufferedWriter,PrintWriter,-,26,Writer例子(示例10-5),tryFileWriterfw=newFileWriter(mydata.txt);PrintWriterout=newPrintWriter(fw);out

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论