Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方。这就是“Random”的意义所在。
RandomAccessFile的对象包含一个记录指针,用于标识当前流的读写位置,这个位置可以向前移动,也可以向后移动。RandomAccessFile包含两个方法来操作文件记录指针。
long getFilePoint():记录文件指针的当前位置。
void seek(long pos):将文件记录指针定位到pos位置。
RandomAccessFile包含InputStream的三个read方法,也包含OutputStream的三个write方法。同时RandomAccessFile还包含一系列的readXxx和writeXxx方法完成输入输出。
RandomAccessFile的构造方法如下
mode的值有四个
"r":以只读文方式打开指定文件。调用结果对象的任何 write 方法都将导致抛出 IOException(如果你写的话会有IOException)。
"rw":以读写方式打开指定文件,不存在就创建新文件。
"rws":打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到基础存储设备。
"rwd":打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到基础存储设备。
(rwd 可以被用来降低I/O操作执行的数量。它只要求更新文件内容被写入存储。rws要求更新文件内容和Metadata(元数据)(它是“关于数据的数据”——data about data)被写入。一般要求至少一次以上的低层I/O操作。)