14.Java IO: RandomAccessFile

来源:互联网 发布:石川智晶 知乎 编辑:程序博客网 时间:2024/05/17 09:01

本文是在Java IO: FileInputStream翻译而来。

javaIO API中,RandomAccessFile类允许你在文件中移动,同时从中读取数据或写入数据。你也可以替换文件的部分存在的部分。用FileInputStream 或FileOutputStream不能这样做。

创建RandomAccessFile

在用RandomAccessFile类工作前,你必须初始化它。例如:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");

注意第二个输入到构造器的参数“rw”。以“rw”模式意味着你以读写模式打开文件。查看javaDoc获取更多你打开RandomAccessFile的模式。

在RandomAccessFile里移动

在RandomAccessFile中的特定位置读写,首先你必须定位读或写文件指针的位置。用seek()方法可以完成。文件指针的当前位置通过调用getFilePointer()方法可以获得。
例如:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");file.seek(200);long pointer = file.getFilePointer();file.close();

从RandomAccessFile里读取

通过使用许多read()方法中的一个可以从RandomAccessFile去取数据。例如:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");int aByte = file.read();file.close();

read()方法读取位于文件位置的字节,
字节的位置指向RandomAccessFile实例里的文件指针。

有一件事javaDOc忘记涉及了:在一个字节读取后,在文件中,read()方法增加了文件指针指向下一个字节!这意味着你在没有手动移动文件指针的情况下,可以继续调用read()方法。

向RandomAccessFile写入数据

通过使用许多write()方法中的一个可以向RandomAccessFile写入数据。例如:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");file.write("Hello World".getBytes());file.close();

像read()方法一样,在write()方法调用后,文件指针也向前移动。那样的话在文件中向新的位置写数据时,你不需要常常移动文件指针。

close()

当你用完RandomAccessFile实例后,你可以调用RandomAccessFile的close()方法。可看上面例子的close()方法调用。

RandomAccessFile Exception Handling

为了简洁,适当的RandomAccessFile异常处理超出了本文范围。然而,RandomAccessFile使用完后必须完全关闭,就像一个流或阅读器/写入器。这需要在close()方法周围有适当的异常处理。查看Java IO Exception Handling. 学习更多。

0 0
原创粉丝点击