Java程序设计基础 第10章输入输出系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4. 各种流简介
表10.1列出了java.io包中的各种流和它们的功能。注意,这些流都能传输 char和byte,两种不同的数据类型。
? 表10.1
10.2 各种流的使用
10.2.1 文件流
文件流(File streams)是用来传输当前系统下的某个文件中的一些内容 的,它应该是最简单的一种流,它可以是以下几种流类的对象: FileReader,FileWriter,FileInputStream和FileOutputStream。
10.1 输入输出流的概述
Java的输入和输出多以流的方式进行的,它的特点是数据的发送 和获取都是延数据序列顺序进行的,每个数据必须等待它前面的数 据发送或读入后才能被读写。
? 当需要读入数据时,程序先从数据的来源(文件、网络等)打开一个流, 然后从这个流中顺序读取数据
? 当要输出数据时,程序打开一个流,通过这个流向输出目标顺序写入数 据
第10章 输入输出系统
学习重点:
?输入输出的总体结构 ?流的概念 ?构建不同的流
第10章 输入输出系统
10.1 输入输出流的概述 10.2 各种流的使用
10.2.1 文件流 10.2.2 管道流 10.2.3 连接文件 10.2.4 过滤流 10.2.5 对象的序列化 10.2.6 随机访问 10.3 练习题
如果不用管道流,这个操作过程必须存储两个中间过程,即经过第一 次reverse()后得到的词表和经过sort()之后的词表。如图所示
Reverse
List of Words
Sort
List of Reversed Words
Reverse
List of Reversed Sorted Words
List of Rhyming Words
1. Character流
Character流以Reader(对应输入)和Writer(对应输出)两个类族来实现, 其中Reader和Writer是输入和输出族的根类
Reader
BufferedReader CharArrayReader InputStreamReader
FilterReader PipedReader StringReader
例10.3 对词汇的韵排序
这个例子中一共定义了3个类,主要的流程结构定义在RhymingWords 类
中,它是这个程序的主类,另外,我们还定义了ReverseThread和 SortThread两个线程,它们的工作就是分别执行上图中指出的reverse和 sort的动作,
(1) ReverseThread的作用是执行将单词的字母顺序逆转过来的 动作,源代码如下:
LineNumberReader
FileReader PushbackReader
Writer
Bufferedwriter CharArraywriter OutputStreamReader
FilterWriter PipedWriter StringWriter FilterWriter
FileWriter
例10.1 使用File Reader和File writer的文件复制
这个例子就是把partnovel.txt的内容传输到target.txt中,这两个 文件都在本机的e:\files中。 ? 程序代码
例10.2 使用InputStream和OutputStream的文件复制
? 程序代码
? 两个方法复制同样一段文件内容,每次读取的内容是不一样的, FileReader每次读取的是一个字符(charactor),而屏幕中显示的是这个 字符的编码(0到65 535之间的一个整数)。而FileInputStream每次读取的 是一个字节(byte),而屏幕中显示的是这个字节的编码(0~255之间的一 个整数)。
3. 关于IO的根类
Reader含有以下读取字符和字符数组的方法:
int read() int read(char cbuf[]) int read(char cbuf[], int offset, int length) 而InputStream定义了读取byte型数据的方法如下: int read() int read(byte cbuf[]) int read(byte cbuf[], int offset, int length)
2. Byte流
传输8位的数据就应用 Byte流,Java库中用InputStream(输入)和 OutputStream(输出)类族中的类来实现8位数据的传输,这些类主要用来 传输二进制数据,如声音和图像,ObjectInputStream ObjectOutputStreamy用来传输对象序列。
Writer方法如下:
intFra Baidu bibliotekwrite(int c) int write(char cbuf[]) int write(char cbuf[], int offset, int length) OutputStream方法如下: int write(int c) int write(byte cbuf[]) int write(byte cbuf[], int offset, int length)
而如果用管道流,把一个方法的输出作为另一个方法的输入,就不需 要中间的存储文件了,当然这时必须用多个线程同时运行,即 revers(),sort()和reverse()一起工作,并且把中间的存储文件用
管道流来代替。如图所示。
Reverse
Sort
List of Words
Reverse
List of Rhyming Words
10.2.2 管道流
管道流(Pipe Streams)是把一个线程的输出作为另一个线程的输 入。实现它的是PipedReader、PipedWriter、PipedInputStream和 PipedOutputStream。
管道流(Pipe Streams)的作用
如果定义了一个类,用来实现对一组词的操作,其中的一个操作是按它 们的韵(词尾)排序,方法是先把这些词的字序逆转(reverse()),然后把逆转 后的词排序(sort()),最后再逆转每个词(reverse()),这样就得到这些词的 韵的排序。
相关文档
最新文档