Java访问磁盘文件机制。

    我们知道,数据在磁盘中的唯一最小描述就是文件,也就是说上层应用程序只能通过文件来操作磁盘上的数据,文件也是操作系统和磁盘驱动器交互的最小单元。值得注意的是,在Java中通常的File并不代表一个真实存在的文件对象,当你指定一个路径描述符时,他就会返回一个代表这个路径的虚拟对象,这个可能是一个真实存在的文件或者是一个包含多个文件的目录。为何要这样设计呢?因为在大多数情况下,我们并不关心这个文件是否真的存在,而是关心对这个文件到底如何操作。
    何时会真正检查一个文件存不存在?就是在真正要读取这个文件时。例如,FileInputStream类都是操作一个文件的接口,注意到在创建一个FileInputStream对象时会创建一个FileDescriptor对象,其实这个对象就是真正操作的与低层操作系统相关联的文件描述。例如,可以调用FileDescriptor.sync()方法将操作系统缓存中的数据强制刷新到物理磁盘中。
    下面以读取文件的程序为例介绍如何从磁盘读取一段文本字符,如上图所示。
    当传入一个文件路径时,将会根据这个路径创建一个File对象来标识这个文件,然后根据这个File对象创建真正读取文件的操作对象,这时将会真正创建一个关联真实存在的磁盘文件的文件描述符FileDescriptor,通过这个对象可以直接控制这个磁盘文件。由于我们需要读取的是字符格式,所以需要StreamDecoder类将byte解码为char格式。至于如何从磁盘驱动器上读取一段数据,操作系统会帮我们完成。至于操作系统是如何将数据持久化到磁盘及如何建立数据结构的,需要根据当前操作系统使用何种文件系统来回答。

猜你喜欢

转载自blog.csdn.net/en_joker/article/details/81286102