📅  最后修改于: 2023-12-03 15:04:47.573000             🧑  作者: Mango
RandomAccessFile
类是Java API提供的一个实现随机访问文件的方法的工具类。它可以读写文件,还可以操作文件中的指定位置读写,随机访问文件比较方便。
RandomAccessFile
的构造方法有两个参数,第一个是文件路径,第二个是访问模式。访问模式可以为r
,rw
,rws
和rwd
。
r
:以只读方式打开文件。rw
:打开文件以进行读写操作。rws
:打开文件以进行读写操作,同时对文件的内容或元数据的每个更新都同步写入到底层存储设备。rwd
:打开文件以进行读写操作,同时对文件内容的每个更新都同步写入到底层存储设备。以下是创建RandomAccessFile
对象的示例代码:
import java.io.*;
public class RandomAccessFileDemo {
public static void main(String args[])throws IOException {
File file = new File("testFile.txt");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
}
}
RandomAccessFile
对象中包含一个指针,指向文件中的当前位置,使用getFilePointer()
方法可以获取文件指针的位置,使用seek()
方法可以设置文件指针的位置。
long point = raf.getFilePointer(); //获取当前指针位置
raf.seek(raf.length()); //将指针移到文件末尾
使用read()
方法可以从文件中读取一个字节,使用read(byte[] b)
方法可以从文件中读取数据到字节数组中,使用read(byte[] b, int off, int len)
方法可以从文件中读取指定长度的数据到字节数组中。
使用write(int b)
方法可以写入一个字节到文件中,使用write(byte[] b)
方法可以写入字节数组到文件中,使用write(byte[] b, int off, int len)
方法可以写入字节数组的指定部分到文件中。
byte[] b = new byte[1024];
int len = -1;
while((len = raf.read(b)) != -1) {
System.out.println(new String(b, 0, len));
}
raf.write("Hello World!".getBytes());
使用setLength()
方法可以截取文件到指定大小。
raf.setLength(1024); //将文件截取为1024字节
使用close()
方法可以关闭RandomAccessFile
对象,释放它所占用的系统资源。
raf.close(); //关闭RandomAccessFile对象
RandomAccessFile
类提供了操作文件的很多方法,可以方便地对文件进行读写和指定位置操作。但需要注意的是,RandomAccessFile
类只适用于本地文件,不能访问网络文件,也不能访问只读文件系统。此外,文件指针越界可能会抛出EOFException
异常。