12.5. 程序员眼中的文件¶
程序员对随机访问文件的逻辑视图是单个字节数组。与文件的交互可以看作一个通信通道,用于发出以下三种指令之一:从文件的当前位置读取字节、在文件的当前位置写入字节,以及移动文件中的当前位置。你通常不会看到字节如何存储在磁盘的扇区、簇等中。从逻辑地址到物理地址的映射由文件系统完成,扇区级缓冲由 磁盘控制器 自动完成。
处理磁盘文件中的记录时,访问顺序对 I/O 时间有很大影响。 随机访问 过程按与文件中逻辑顺序无关的顺序处理记录。 顺序访问 按文件中逻辑出现的顺序处理记录。如果磁盘文件的物理布局与其逻辑布局匹配,顺序处理需要更少的寻道时间,这在磁盘上创建文件时自由空间百分比较高时可以预期。
Java 提供了几种操作磁盘文件的机制。最常用的是 RandomAccessFile 类。以下方法可用于操作文件中的信息。
RandomAccessFile(String name, String mode):类构造函数, 打开磁盘文件进行处理。read(byte[] b):从文件中的当前位置读取一些字节。 当字节被读取时,当前位置向前移动。write(byte[] b):在文件中的当前位置写入一些字节 (覆盖该位置已有的字节)。当字节被写入时,当前位置向前移动。seek(long pos): 将文件中的当前位置移动到pos。这允许读取或写入文件中任意位置的字节。close():处理完成后关闭文件。
注意,这个 ADT 的精神与 消息传递(message passing) 版本的 缓冲池 ADT 类似。
