《Java流式IO编程.ppt》由会员分享,可在线阅读,更多相关《Java流式IO编程.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十五章第十五章JavaJava流式流式I/OI/O编程编程 目标目标掌握java流式输入/输出原理了解java基本I/O流类型了解字节流和字符流了解节点流和处理流2 2Java I/O基本原理基本原理为为进进行行数数据据的的输输入入/输输出出操操作作,Java中中把把不不同同的的输输入入/输输出出源源(键键盘盘、文文件件、网网络络连连接接等等)抽抽象象表表述述为为“流流”(stream)。java.io包包中中定定义义了了多多个个流流类类型型(类类或或抽抽象象类类)来来实实现现输入输入/输出功能。输出功能。两种基本的流:输入流和输出流两种基本的流:输入流和输出流输入流:只能从中读取数据,而不
2、能向其写出数据输出流:只能向其写出数据,而不能从中读取数据3 3节点流和处理流节点流和处理流 节节点点流流:可可以以从从/向向一一个个特特定定的的地地方方(节节点点)读写数据,例如磁盘或者一块内存。读写数据,例如磁盘或者一块内存。处处理理流流:是是对对一一个个已已存存在在的的流流的的连连接接和和封封装装,通通过过所所封封装装的的流流的的功功能能调调用用实实现现数数据读据读/写功能。写功能。4 4节点流和处理流节点流和处理流5 5字符流和字节流字符流和字节流按处理数据的单位划分,按处理数据的单位划分,Java支持两支持两 种基种基本的流类型本的流类型:字符流和字节流字符流和字节流字节流字符流输入
3、输入InputStreamReader输出输出OutputStreamWriter6 6InputStream类提供的方法类提供的方法 三个基本的read方法:int read()int read(byte buffer)int read(byte buffer,int offset,int length)其它方法:void close()int available()skip(long n)boolean markSupported()void mark(int readlimit)void reset()7 7OutputStream类提供的方法类提供的方法 三个基本的write方法:vo
4、id write(int c)void write(byte buffer)void write(byte buffer,int offset,int length)其它方法void close()void flush()8 8Reader类提供的方法类提供的方法 三个基本的三个基本的read方法方法:int read()int read(char cbuf)int read(char cbuf,int offset,int length)其它方法其它方法void close()boolean ready()skip(long n)boolean markSupported()void mar
5、k(int readAheadLimit)void reset()9 9Writer类提供的方法类提供的方法 三个基本的三个基本的write方法方法:void write(int c)void write(char cbuf)void write(char cbuf,int offset,int length)void write(String string)void write(String string,int offset,int length)其它方法其它方法void close()void flush()1010节点流类型节点流类型(Node Streams)类 型 字 符 流字 节
6、 流FileFileReaderFileWriterFileInputStreamFileOutputStreamMemory ArrayCharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStreamMemory StringStringReaderStringWriterPipePipedReaderPipedWriterPipedInputStreamPipedOutputStream1111节点流应用举例节点流应用举例-文件复制文件复制 import java.io.*;public class Test1
7、public static void main(String args)try FileReader input=new FileReader(Test1.java);FileWriter output=new FileWriter(temp.txt);int read=input.read();while(read!=-1)output.write(read);read=input.read();input.close();output.close();catch(IOException e)System.out.println(e);1212缓冲功能处理流举例缓冲功能处理流举例import
8、 java.io.*;public class Test2 public static void main(String args)try FileReader input=new FileReader(Test2.java);BufferedReader br=new BufferedReader(input);FileWriter output=new FileWriter(temp.txt);BufferedWriter bw=new BufferedWriter(output);String s=br.readLine();while(s!=null)bw.write(s);bw.ne
9、wLine();s=br.readLine();br.close();bw.close();catch(IOException e)e.printStackTrace();1313练习一 练习练习M14-12/13页的例子,体会不同的数页的例子,体会不同的数据输入输出流的用法;据输入输出流的用法;1414I/O 流的链接流的链接1515处理流处理流(Processing Streams)处理类型处理类型 字字 符符 流流字字 节节 流流 BufferingBufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStreamFil
10、teringFilterReaderFilterWriterFilterInputStreamFilterOutputStreamConverting between bytes and characterInputStreamReaderOutputStreamWriterObject SerializationObjectInputStreamObjectOutputStreamData conversionDataInputStreamDataOutputStreamCountingLineNumberReaderLineNumberInputStreamPeeking aheadPus
11、backReaderPushbackInputStreamPintingPrintWriterPrintStream1616InputStream类层次类层次InputStreamFileInputStreamPipedInputStreamObjectInputStreamSequenceInputStreamFilterInputStreamStringBufferInputStreamByteArrayInputStreamDataInputStreamBufferedInputStreamPushbackInputStreamLineNumberInputStream1717Outpu
12、tStream类层次类层次OutputStreamFileOutputStreamObjectOutputStreamFilterInputStreamByteArrayOutputStreamDataOutputStreamBufferedOutputStreamPrintStreamPipedOutputStream1818Reader类层次类层次ReaderBufferedReaderStringReaderCharArrayReaderInputStreamReaderPipedReaderFilterReaderFileReaderPushbackReaderLineNumberRe
13、ader1919Writer类层次类层次WriterBufferedWriterStringWriterCharArrayWriterPipedWriterOutputStreamWriterPrintWriterFilterWriterFileWriter2020使用不同的字符编码使用不同的字符编码如如果果需需要要从从与与本本地地机机器器不不同同的的字字符符编编码码格格式式的的文文件件中中读读取取数数据据(例例如如,从从网网络络上上的的一一台台基基于于不不同同平平台台的的机机器器上上读读取取文文件件),可可以以在在构构造造InputStreamReader对对象象时时显显式式指指定定其其字字符编码,例如:符编码,例如:ir=new InputStreamReader(System.in,“ISO8859_1”)2121练习二练习二分析、运行下面两个程序,体会分析、运行下面两个程序,体会IO流类的用法。流类的用法。1:.codesmod15IOStreamDemo.java2:.codesmod15TextFile.java2222作业作业实现一个简单的阅读器,要求如下:实现一个简单的阅读器,要求如下:阅读器应具有可视化的用户界面,能够打开并显示本地的一个文本文件内容;练习使用菜单,文件对话框等组件扩充阅读器的功能,直至使之成为一个简单的文本编辑器;2323
限制150内