DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > MySQL > 常见问题

读文件(JDK7之前)(1)

20.5.1 读文件(JDK 7之前)(1)

下面重写前面显示的两个基于通道的文件输入示例,从而只使用JDK 7之前的特性。第一个例子通过手动分配缓存,然后执行显式的读操作来读取文件。第二个例子使用映射文件,自动进行读文件过程。

如果使用JDK 7之前的Java版本,当使用通道和手动分配的缓存读文件时,首先需要使用在第19章解释的相同机制,使用FileInputStream为读操作打开文件。接下来,通过对FileInputStream对象调用getChannel()方法,获取链接到这个文件的通道。该方法的一般形式如下所示: 

  1. FileChannel getChannel( ) 

这个方法返回一个FileChannel对象,该对象为文件操作封装了通道。然后,调用allocate()方法以分配缓存。因为文件通道操作字节缓存,所以需要使用ByteBuffer定义的allocate()方法,在前面介绍过该方法的工作方式。

下面的程序显示了JDK 7之前的Java版本,如何使用显式输入操作的通道读取并显示test.txt文件的内容:

 
 
 
在这个程序中,注意文件是使用FileInputStream类的构造函数打开的,并且将指向这种对象的引用赋给fIn。接下来对fIn调用getChannel()方法,获取连接到该文件的通道。之后,该程序就与前面显示的JDK 7版本的程度类似了。总结一下:程序调用ByteBuffer的allocate()方法以分配缓存,当读取文件时,该缓存用于容纳文件的内容。之所以使用字节缓存,是因为FileChannel操作字节。指向这个缓存的引用保存在mBuf中。然后调用read()方法,将文件内容读取到mBuf中。读取的字节数量保存在count中。接下来调用rewind()方法以回绕缓存。这个调用是必需的,因为在执行完read()方法后,当前位置位于缓存的末尾,为了通过get()方法读取mBuf缓存中的字节,必须将当前位置重置到缓存的开头。当到达文件末尾时,read()方法的返回值将是−1。当发生这种情况时,显式地关闭通道和文件,程序结束。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号