- 4
- 0
- 约2.6千字
- 约 44页
- 2018-06-30 发布于四川
- 举报
java实用程序设计(西电版)第八章输入输出
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对象,基本的文件输出一般采用FileOutputStream或FileWriter类,传入的参数为目标文件路径名字符串或代表目标文件路径名的File对象。 2. 缓存数据 例8-2中的文件读写是逐字节进行的,这种方式在读写大量数据时非常慢。一种改进的方式是将数据积累到一个大的数据块后再成批地读入或写出,通过减少系统资源的读写次数来提高程序执行的效率。能够实现这一功能的I/O类包括BufferedInputStreamBufferedOutputStream以及BufferedReaderBufferedWriter。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 对 象 串 行 化 到目前为止,我
您可能关注的文档
- chapter2arthrology(关节学).ppt
- chap_11公共物品及共有资源(经济学原理,曼昆,中英文双语).ppt
- clippers综合征(类固醇激素反应性慢性淋巴细胞性炎症.ppt
- cisco培训资料(思科uc技术入门).ppt
- ciss跨网通-物流管控系统.ppt
- cnnic中国域名产业报告(ppt格式).ppt
- communication 人际沟通能力培训 —如何运用有效沟通来解决工作中的问题.ppt
- cpu供电电路分析和故障检修.ppt
- coreldrawx4实用案例教程第六章对象编辑和辅助工具的.ppt
- 【广告策划】保利拉菲庄园营销全案.ppt
- 腾讯安全沙龙:红队视角下的海外SRC猎场:战略、战术与突破.pdf
- 【icap】ETS的范围扩展:设计和政策挑战.docx
- bcg -美国最高法院关于关税的裁决对你的企业意味着什么 What Does the US Supreme Court Ruling on Tariffs Mean for Your Business.pdf
- 2026届甘肃兰州市高三下学期第一次模拟考试历史试卷(扫描版,含答案).docx
- bcg -零售银行如何让人工智能代理发挥作用 How Retail Banks Can Put AI Agents to Work.pdf
- 住宅项目规范解读(GB 55038-2025) -培训 - 房地产-2025.docx
- 盘扣式脚手架工程量自动计算表 -培训 -房地产-2025.pdf
- 广东省汕头市2024-2025学年高三下学期第一次模拟考试英语学试题(含答案).docx
- 品牌研究+_+2025+CAPSE中国航司品牌榜单.pdf
- 【银河专题】如何看待豆粕内外价差关系.pdf
原创力文档

文档评论(0)