Java 实用程序的设计第8章 输入输出.pptVIP

  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 实用程序的设计第8章 输入输出

      8.1 File类   File类是外存文件和目录的路径名(pathname)的抽象表示,主要用于帮助程序员操作文件和获得文件的信息,但是不提供对文件数据读取的方法(这一功能主要由文件流提供)。通过File类的方法,我们可以得到文件或目录的描述信息(包括文件名、路径、可读写性、大小、最后修改时间等)、生成新的目录和临时文件、改变文件名、删除文件、列出一个目录中的所有文件或满足某种模式的文件、检查一个File对象代表的是文件还是目录等。      8.2 流式输入输出   很多编程语言的输入输出系统中都包含流的概念,它代表能够输出数据的数据源对象或能够接收数据的接收端对象。I/O流能够对应用程序隐藏底层系统和硬件对数据的处理细节。流中的字节具有严格的先进先出顺序,因而可以认为流式输入输出是一种顺序存取方式的输入输出。   1. 字节流   InputStream是输入字节流的根类,所有输入字节流都是InputStream的子类。图8-1给出了输入字节流的类层次结构。其中阴影部分的类为节点流,其余为过滤流。InputStream能够从不同的数据源产生输入,这些数据源包括字节数组、String对象、文件和管道等。输入字节流的基本功能如表8-2所示。 图8-1 输入字节流的类层次结构 图8-2 输出字节流的类层次结构 2. 字符流   JDK 1.1中引入了Reader和Writer的概念,用于提供兼容Unicode的面向字符的输入输出功能。设计Reader和Writer的主要目的是为了国际化,而不是为了替代字节流。虽然有观点认为字符流的处理效率会比字节流低一些,我们仍鼓励读者优先考虑使用字符流。 图8-3 输入字符流的类层次结构 图8-4 输出字符流的类层次结构      8.3 典型的I/O方式   所有的流在创建时自动打开,程序可以通过调用close()方法将其关闭,否则,Java运行环境的垃圾收集机制将隐含将其关闭。   1. 基本文件I/O   基本的文件输入一般采用FileInputStream或FileReader类,传入的参数为文件系统中指定文件的路径名字符串或 抽象路径名File对象,基本的文件输出一般采用FileOutput Stream或FileWriter类,传入的参数为目标文件路径名字符 串或代表目标文件路径名的File对象。   2. 缓存数据   例8-2中的文件读写是逐字节进行的,这种方式在读写大量数据时非常慢。一种改进的方式是将数据积累到一个大的数据块后再成批地读入或写出,通过减少系统资源的读写次数来提高程序执行的效率。能够实现这一功能的I/O类包括BufferedInputStreamBufferedOutputStream以及BufferedReaderBufferedWriter。BufferedOutputStream和BufferedWriter只在缓冲区满或调用flush()方法时才写数据。缓存流是过滤流,其前端(构造方法参数)必须是一个其他流,在构造缓存流时,还可以指定缓冲区的大小。   3. 使用数据流存储和恢复数据   数据流包括DataInputStream和DataOutputStream类,用 来对数据进行结构化的读写。这两个类都是面向字节的, 因此其中应使用InputStream和OutputStream作为参数。如果我们使用DataOutputStream写入数据,Java能够保证通过DataInputStream正确地读出数据。   4. 标准I/O   在Java中,标准输入是键盘,标准输出是加载Java程序的命令行窗口。程序的所有输入都可以来自于标准输入,而所有的输出也都可以发送到标准输出。由于从键盘输入和向屏幕输出在Java程序中是非常常用的操作,因此,Java在System类中定义了与标准输入输出相关的3个流,分别是System.in、System.out及System.err。这3个流都是System类的静态成员变量。     8.4 RandomAccessFile   流式的输入输出为用户提供一种对数据的顺序访问方式,容易看到,流中的数据必须按照顺序进行读写。当不需要按照顺序(随机地)访问磁盘文件中的内容时,可以使用RandomAccessFile类,以实现对文件的随机读写操作。RandomAccessFile适用于由大小已知的记录组成的文件,使用这个类,可以在文件内部向前和向后移动,程序员可以通过seek()方法指向文件的某处,然后读取或修改记录,文件中记录的大小可以不同,只要能够确定记录的大小及位置即可正确读取。     8.5 对 象 串 行 化   到目前为止,我

文档评论(0)

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

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

1亿VIP精品文档

相关文档