Java程序设计修改-ch09.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java程序设计修改-ch09.doc

第9章 输入输出流 流是指在通信路径上从信源到目的地传输的字节序列。多数应用程序都需要与外部设备进行数据交换,如磁盘和网络。Java语言的输入与输出功能通过流类来实现,这些类都存放在java.io包中。 本章要点 数据流的概念 字节流类的用法 字符流类的用法 文件的读出与写入 本章难点 输入输出流类之间的关系 学习目标 掌握数据流的概念 掌握利用数据流输入与输出数据 掌握文件的读出与写入 9.1 数据流的概念 9.1.1 输入流与输出流 流是按一定顺序排列的数据的集合。输入数据时,一个程序打开数据源上的一个流(文件或内存等),然后按顺序输入这个流中的数据,这样的流称为输入流。 输出数据时,一个程序可以打开一个目的地的流,然后按顺序从程序向这个目的地输出数据,这样的流称为输出流。 输入和输出的方向是以程序为基准的,向程序输入数据的流定义为输入流,从程序输出数据的流定义为输出流。通常,将从输入流中向程序中输入数据称为读数据(read),反之,从程序中将数据输出到输出流中称为写数据(write)。 9.1.2 字节流与字符流 按照Java的输入/输出流的数据类型,流可分为字节流和字符流两类。 1.字节流 字节流是按字节读/写二进制数据。 在javo.io包中,基本输入流类(InputStream)和基本输出流类(OutputStream)是处理以8位字节为基本单位的字节流类,读写以字节为单位进行。 在对数据流操作时,即可以向输出流写入一个字节,或从输入流中读取一个字节,显然这样数据的传输效率很低。 为提高数据的传输效率,通常使用缓冲流(buffered stream),即为一个流配有一个缓冲区(buffer),一个缓冲区就是专门用于传送数据的—块内存。 当向一个缓冲流写入数据时,系统将数据发送到缓冲区,而不是直接发送到外部设备。缓冲区自动记录数据,当缓冲区满时,系统将数据全部发送到相应的设备。当从一个缓冲流中读取数据时,系统实际是从缓冲区中读取数据。当缓冲区空时,系统就会从相关设备自动读取数据,并读取尽可能多的数据充满缓冲区。由此可见,缓冲流提高了内存与外部设备之间的数据传输效率。 2.字符流 字符流的输入/输出数据是Unicode字符,当遇到不同的编码时,Java的字符流会自动将其转换成Unicode字符。Reader类和Writer类是专门处理16位字符流的类,其读写以字符为单位进行。 上述提到的InputStream类、OutputStream类、Reader类和Writer类均是基本输入和输出的抽象类,不能用于直接创建对象来完成输入输出操作,所以,需要使用这些类的子类来完成特定类型或格式的输入输出操作。 在Java编程操作中,文件操作是最常用的操作之一,我们可以利用字节流操作来完成对于随机文件的读取,可以利用字符流操作完成对于一般文本文件的读取。 图9-1列出了常用的基本流类,图9-2列出了字节流各类之间的关系,图9-3列出了字符流各类之间的关系。 图9-1 基本流类的继承关系 图9-2 I/O包字节流的类层次关系图 图9-3 I/O包字符流的类层次关系图 9.1.3 Java的标准数据流 Java的标准数据流是指在字符方式下(如DOS),程序与系统进行交互的方式。 Java通过系统类System实现标准输入输出的功能。System类在java.lang包中,声明为一个final类。 System类定义了三个成员变量,分别是: static PrintStream err “标准”错误输出流,对象是屏幕。 static InputStream in “标准”输入流,对象是键盘。 static PrintStream out “标准”输出流,对象是屏幕。 这三个变量都是静态(static)成员变量,即类成员变量,所以可以直接使用。in定义为9.3节要讨论的InputStream类的static成员变量,所以可以直接调用InputStream类提供的输入方法,out和err定义为9.3节要讨论的PrintStream类的static成员变量,所以可以直接调用PrintStream类提供的输出方法。 1.标准输入System.in System.in用于标准输入,其中read方法从键盘接收数据。 public int read() throws IOException 返回读入的一个字节 public int read(byte[] b) throws IOException 读入的多个字节返回缓冲区b中 如果输入流结束,返回-1,发生I/O错误时,抛出IOException异常。 2.标准输出System.out System.out用于屏幕输出,常用的调用

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档