- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java_8_文件
第九章 输入输出流及其文件处理
本章提要
输入输出处理及流(stream)的概念
标准设备输入输出流对象
流类的分类
输入流、输出流
字节流、字符流
过虑流
流与文件处理;9.1 流(stream)的概念
你已经看到,在JAVA中,所有的事情都是依靠类或对象来完成的。
那么,程序的输入输出处理,当然也离不开与其相关的类和对象。
在这里,有一个概念需要重申:任何类型的数据,无论存储在内存
还是文件中,它们最终都是以字节序列的形式被存放在那里的。
在JAVA中,能被程序读取一个字节序列的对象被称为“输入流对象”
(InputStream) ,而能写入一个字节序列的对象被称为“输出流对象”
(OutputStream) 。
进而,JAVA将那些能被程序直接从设备或文件中读写字节的对象称
为“源点流对象”。另外,还有一种流对象,它们只能从“源点流对象”中
读取字节,但却可以将读到的那些字节重新“合成”为你所期望的各种数
据类型,这种对象被称为“加工流对象”。如下所示: ; 在JAVA中,某个“流”(stream)就是某个流类的对象。实际上,你
可以将某个“流”看成是数据通道中的某段“管道”。而这些管道需要你来
一个接一个地将它们“连接”起来,以形成一个从文件到程序或从程序到
文件的数据“通道”。
流的设计者们使用了一种非常聪明的机制来把各种功能分开:他们
将输入输出过程中可能用到的各种功能都分别封装成了一个个不同的流
类,每个流类只完成一种功能,并且这些“流”的功能从不重叠。
在java.io包中,存放了所有与输入输出有关的流类。; 其中有些流,只有“连接”到文件或设备上才能工作——“源点流”。
而另一些却只能被“连接”到“源点流”上才能工作——“加工流”。为此,
流的设计者们精心设计了60多种流类。
流的设计者在每种“输入流”中都设计了用于从其中读取数据的方法
(如,read等);也在每种“输出流”中设计了用于向其中写入数据的方
法(如,writer等)。; ;9.2 标准设备输入输出流对象
9.2.1 标准输入流对象
在大多数情况下,标准输入设备就是键盘。因此,“标准输入流”
对象就代表了键盘。在JAVA中,它的对象名为:
System.in
它是类System中的一个静态成员。因此,你不用创建该对象,就可以直
接使用它。显然,它是一个“源点流”(直接与键盘相“连接”)。
该对象有一个方法read(),可用于每次从键盘读入一个字符,并
返回该字符的int类型的值。例如,
int a=System.in.read();
或 char ch=(char)System.in.read();; 如果你想顺利地读入一个字符(char类型的值),那么,你还需要创建另
一个输入流(加工流)对象。该对象的类名是:
InputStreamReader
例如,创建其对象的语句:
InputStreamReader charin= new InputStreamReader( System.in );
其实这就是将“加工流”(charin)连接到“源点流”(System.in)上 。
因为该流中也有一个read方法,可以每次从System.in中读入一个字符的
int值,然后将它转换为char类型并返回该char值。
例如,
char ch=charin.read();; 你一定会觉得上面的创建语句很特别。其实,这就是在连接两个管
道(即连接两个输入流对象)。
然而,象InputStreamReader这样的输入流,却只能用来读入由另一
个输入流读入的数据。如上所见,它的作用仅仅是将由System.in读入的
int类型的字符转换成char 类型——“加工流”。
因此,在创建它时,你必须用另外一个已存在的输入流对象作为其
初始化参数——将加工流InputStreamReader对象连接到源点流对象
System.in 的后面——得到一个新的输入流。即,如下语句:
InputStreamReader charin= new InputStreamReader( System.in );
在后面的介绍中,你将会知道,InputStreamReader其实是一个“能
将字节流转换成字符流”的“加工流”。; 不幸的是, InputStreamReader却只能读入一个字符。若你想要读入
一行字符,那么,你还得需要再创建另外一个类名叫做BufferedRea
您可能关注的文档
最近下载
- 第九章精神分裂症及其他精神病性精防试题.ppt VIP
- 生活饮用水输配水设备及防护材料卫生安全评价规范.pdf
- 幼儿园建设项目管理制度.doc
- 重构作业课程视域下的单元作业.pptx VIP
- 眼科手术的配合与护理.pptx
- 2023年华北水利水电大学计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 三年级小数的加减法计算题及答案(100道题).pdf
- 2022-2023学年福建省龙岩市一级校联盟高二(下)期中数学试卷(含解析).docx
- 2023年云南大学软件工程专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 2023年复旦大学计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
文档评论(0)