JAVA IO流学生PowerPoint 演示文稿

上传人:公**** 文档编号:590412027 上传时间:2024-09-14 格式:PPT 页数:29 大小:94KB
返回 下载 相关 举报
JAVA IO流学生PowerPoint 演示文稿_第1页
第1页 / 共29页
JAVA IO流学生PowerPoint 演示文稿_第2页
第2页 / 共29页
JAVA IO流学生PowerPoint 演示文稿_第3页
第3页 / 共29页
JAVA IO流学生PowerPoint 演示文稿_第4页
第4页 / 共29页
JAVA IO流学生PowerPoint 演示文稿_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《JAVA IO流学生PowerPoint 演示文稿》由会员分享,可在线阅读,更多相关《JAVA IO流学生PowerPoint 演示文稿(29页珍藏版)》请在金锄头文库上搜索。

1、Java流1本节主要内容n流的概述n流的分类nInputStream/OutputStreamnReader/Writern流的几种典型流向nRandomAccessFile的用法2I/O流概述n为进行数据的输入/输出操作,Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream)。nStream是从起源(source)到接收(sink)的有序数据njava.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能。n按照流的方向分两种基本的流:输入流和输出流q输入流 :只能从中读取字节数据,而不能向其写出数据q输出流 :只能向其写入字节数据,而不能从中读取数据

2、n按照流所处理的数据类型划分,可以分为:q字节流:用于处理字节数据(8个bit) 包括InputStream/OutputStream。q字符流:用于处理Unicode字符数据(16个bit)。 包括Writer/Reader3节点流和处理流n按照流的角色划分,分为节点流和处理流n可以从/向一个特定的IO设备(如磁盘、网络)读/写数据的流,称为节点流。节点流也被称为低级流。例如:InputStream和Reader的子类都有read()的方法,OutputStream和Writer的子类都有write()的方法,用于读取/写入一个字节或字节数组.但是在实际使用中很少使用单一流类产生的输入/输出

3、流.而是使用这两个方法给其他的流类提供数据数据源程序数据源程序 实现对一个已存在的流的连接和封装,通过所封装的流的功能调用实现对一个已存在的流的连接和封装,通过所封装的流的功能调用 实现数据读实现数据读/ /写功能的流,称为写功能的流,称为处理流。处理流也被称为高级流处理流。处理流也被称为高级流处理流。处理流也被称为高级流处理流。处理流也被称为高级流。4InputStream/OutputStreamnInputStream/OutputStream用于处理字节数据。它们读/写流的方式都是以字节为单位进行的。5InputStream基本方法三个基本的read方法:int read():读取一个

4、字节,并将它返回。int read(byte buffer):将数据读入一个字节数组,同时返回读取的字节数。int read(byte buffer, int offset, int length):将数据读入一个字节数组,放到数组的offset指定的位置开始,并用length来指定读取的最大字节数。 注意注意: :以上三个方法在读取到文件末尾时以上三个方法在读取到文件末尾时, ,都返回都返回-1.-1.可以用来判断是否全部读可以用来判断是否全部读取文件取文件 其它方法:void close():关闭流。int available():返回可以从中读取的字节数。long skip(long n

5、):在输入流中跳过n个字节,将实际跳过的字节数返回。boolean markSupported():判断流是否支持标记功能。void mark(int readlimit):在支持标记的输入流的当前位置设置一个标记。void reset():返回到流的上一个标记。注意必须流支持标记功能。6常见InputStream类n低级InputStream类(节点流):qInputStream:所有字节流的超类,定义了很多用于处理输入流的方法,是个抽象类qByteArrayInputStream:为读取字节数组设计的流,用于从文件中读取二进制数据qPipedInputStream:管道流,qFileInp

6、utStream:用于读取文件中的信息qFilterInputStream:继承自InputStream,能将一个流连接到另一个流的末端,将两个流连接起来n高级InputStream类(处理流):qDataInputStream:可以从低级流中读取简单数据和String类型的数据.这样,可以将底层的读取细节隐藏起来,而直接处理简单类型和String类型的数据qBufferedInputStream:提供缓冲能力的字节输入流7InputStream类层次InputStreamFileInputStreamStringBufferInputStreamByteArrayInputStream节点流

7、处理流ObjectInputStreamPipedInputStreamSequenceInputStreamFilterInputStreamDataInputStreamPushbackInputStreamBufferedInputStreamLineNumberInputStream8InputStream例子(示例10-1)byte buff = new byte1024; int n; FileInputStream fis = null; try fis = new FileInputStream(“C:a.txt”); while(n = fis.read(buff)!=-1)

8、 System.out.write(buff, 0, n); catch (FileNotFoundException e) System.out.println(没有找到文件); System.exit(1); 9OutputStream基本方法n三个基本的write方法:qvoid write(int c)qvoid write(byte buffer)qvoid write(byte buffer, int offset, int length)n 其它方法qvoid close()qvoid flush():将缓冲中的字节发送到流中,同时清空缓冲区10OutputStream类n低级O

9、utputStream,用来向设备中写入字节流qOutputStream:所有字节输出流的基类qByteArrayOutputStream :按字节数组方式向设备中写入字节流的类qPipedOutputStream:管道输出流n高级OutputStreamqDataOutputStream:可以向低级流中写入简单数据和String类型的数据.这样,可以将底层的写入细节隐藏起来,而直接处理简单类型和String类型的数据qBufferedOutputStream:提供缓冲能力的字节输出流11OutputStream类层次OutputStreamFileOutputStreamFilterInpu

10、tStreamByteArrayOutputStreamPipedOutputStream节点流处理流ObjectOutputStreamDataOutputStreamPrintStreamBufferedOutputStream12OutputStream例子(示例10-2)FileOutputStream out; /声明一个Print Stream流PrintStream p; try out = new FileOutputStream(myfile.txt);p = new PrintStream( out );p.println (面朝大海,春暖花开);p.close(); ca

11、tch (Exception e) System.err.println (Error writing to file);13通过Stream拷贝文本文件例子(示例10-3)n通过FileInputStream和FileOutputStream,实现从一个文本文件拷贝内容到另一个文件的例子n通过FileInputStream从源文本文件中读出数据,然后通过FileOutputStream写入到另外一个文本文件中。n使用高级流(BufferedInputStream/BufferedOutputStream) 对低级流进行包装 14Reader/WriternReader/Writer处理的是字

12、符类型的数据。它处理流的方式是以字符为单位进行的。nReader/Writer和InputStream/OutputStream一样,也分为节点流(低级流)和处理流(高级流)。nReader和InputStream一样,用于从流中读取数据。它和InputStream的区别在于,InputStream以字节为单位操作流,而Reader以字符为单位操作流。15Reader常用方法n读取方法:qint read():用于从流中读出一个字符,并将它返回。qint read(char buffer):将从流中读出的字符放到字符数组buffer中,返回读出的字符数。qint read(char buffe

13、r,int offset,int length):将读出的字符放到字符数组的指定offset开始的空间,每次最多读出length个字符。n其他方法:qvoid close():关闭Reader流。qboolean ready():判断流是否已经准备好被读取。qskip(long n):跳过指定的n个字符。qboolean markSupported():和InputStream中的markSupported方法类似。qvoid mark(int readAheadLimit):和InputStream中的mark方法类似。qvoid reset():和InputStream中的reset方法类

14、似。16Reader相关类n低级Reader类:qCharArrayReader:qStringReaderqPipedReaderqFileReadern高级Reader类qBufferedReaderqInputStreamReaderqLineNumberReader17Reader类层次ReaderBufferedReaderStringReaderCharArrayReaderInputStreamReaderPipedReaderFilterReaderFileReaderPushbackReaderLineNumberReader节点流处理流18Reader例子(示例10-4)F

15、ileReader fr = new FileReader(C:/nos/tmp/mydata.txt);BufferedReader br = new BufferedReader(fr);String record = new String();while (record = br.readLine() != null) recCount+;System.out.println(Line + recCount + : + record); 19InputStreamReadernInputStreamReader能将字节流转换为一个Reader,即能将字节流转换为字符流 public st

16、atic void readRile() try InputStreamReader isr = new InputStreamReader(new FileInputStream(c:a.txt);BufferedReader bufferedReader = new BufferedReader(isr) String str = ;while (str =bufferedReader.readLine() ) != null)System.out.println(str); catch (FileNotFoundException e) e.printStackTrace(); catc

17、h (IOException e) e.printStackTrace();20CharArrayReadern从内存的字符串数组中读取字符,它的数据源是一个字符数组,它把字符数组类型转换为Reader类型: public static void readRile() char arrays = a,你,好,啊,t;CharArrayReader reader = new CharArrayReader(arrays);int i = 0;try while ( (i = reader.read() != -1)System.out.print(char)i); catch (IOExcept

18、ion e) / TODO 自动生成 catch 块e.printStackTrace(); reader.close();21StringReadern把String类型转换为Reader类型 public static void readRile() String str = “经费来的快速家法律监督是分机离开收到n将发了开 赛发了看见的说n发觉脸上开发介绍两分巨大胜利n;StringReader reader = new StringReader(str);int i = 0;try while( (i= reader.read() ) != -1) System.out.print(c

19、har)i); catch (IOException e) e.printStackTrace(); reader.close();22Writer常用方法n写入方法:qvoid write(int c):将参数c的低16位组成字符写入到流中。qvoid write(char buffer):将字符数组buffer中的字符写入到流中。qvoid write(char buffer, int offset, int length):将字符数组buffer中从offset开始的length个字符写入到流中。qvoid write(String string):将string字符串写入到流中。qvo

20、id write(String string, int offset, int length):将字符string中从offset开始的length个字符写入到流中。n其他方法:qvoid close():和OutputStream的close方法类似。qvoid flush():和OutputStream的flush方法类似。23Writer相关类n低级Writer类:qCharArrayWriterqStringWriterqPipedWriterqFileWritern高级Writer类:qBufferedWriterqOutputStreamWriterqPrintWriter:将流转

21、换为文本24Writer类层次WriterStringWriterCharArrayWriterPipedWriterOutputStreamWriterFileWriter节点流处理流FilterWriterBufferedWriterPrintWriter25Writer例子(示例10-5)try FileWriter fw = new FileWriter(mydata.txt); PrintWriter out = new PrintWriter(fw); out.print(面朝大海,春暖花开!); out.close(); fw.close(); catch (IOExceptio

22、n e) e.printStackTrace(); 26流的几种典型流向nA-file (bytes)FileInputStream (bytes)DataInputStream (String)nA-File (bytes)FileInputStream (bytes)BufferedInputStream (bytes)DataInputStream (ints,floats,Strings,others)n(bytes)(bytes)FileReader (chars/Strings)LineNumberReader(chars/strings)n流的基本原则是:高级流与低级流打交道,低

23、级流与I/O设备,文件打叫道,高级流和低级流可以相互交互27特殊的文件流-RandomAccessFilenRandomAccessFile是一种特殊的文件流,可以用它在文件的任何地方查找或者插入数据nRandomAccessFile同时实现了DataInput和DataOutput接口,所以可以用它来读/写文件n构造器:qRandomAccessFile(java.io.File f,String mode)qRandomAccessFile(String file,String mode)n代码参见案例代码参见案例:10-728小结njava.io包中的内容nJava基本I/O流n字节流/字符流n节点流(低级流)/处理流(高级流)29

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号