DBMNG数据库管理与应用

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

写文件(JDK7之前)

20.5.2 写文件(JDK 7之前)

下面重写前面显示的两个基于通道的文件输出示例,从而只使用JDK 7之前的特性。第一个例子通过手动分配缓存,然后执行显式的输出操作来写入文件。第二个例子使用映射文件自动执行这个过程。对于这两个例子,都既不使用Path对象也不使用带资源的try语句。这是因为它们都是由JDK 7新增的部分。

如果使用JDK 7之前的Java版本,当使用通道和手动分配的缓存写文件时,首先需要针对输出打开文件。这是通过创建FileOutputStream对象完成的,正如在第19章所描述的。接下来调用getChannel()方法,获取链接到文件的通道,然后调用allocate()方法以分配字节缓存,就像刚才描述的那样。接下来将希望写入的输入放到缓存中,然后对通道调用write()方法。下面的程序演示了这个过程。该程序将字母表写入到test.txt文件中。

 
 
 

在将数据写入到mBuf中之后,为了将当前位置重置为0,需要对mBuf调用rewind()方法。请记住,每次put()调用都会向前推进当前位置。所以在调用write()方法之前,需要将当前位置重置到缓存的开头。如果没有这么做,write()方法就会认为缓存中没有数据。

如果使用JDK 7之前的Java版本,通过映射文件来写入文件,就需要遵循以下步骤。首先,通过创建RandomAccessFile对象为读/写操作打开文件。为了能够从文件读取数据并且能够向文件中写入数据,这是必须要做的。接下来对RandomAccessFile对象调用map()方法,将文件映射到缓存。然后写入缓存。因为缓存被映射到文件,所以对缓存的任何修改都会反映到文件中,因此不需要对通道执行显式的写操作。

下面的程序对前面的程序进行了重写,从而使用映射文件:

 
可以看出,没有对通道本身进行显式的写操作。因为mBuf被映射到文件,所以对mBuf的修改会自动反映到底层的文件中。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号