📜  RandomAccessFile (1)

📅  最后修改于: 2023-12-03 15:04:47.573000             🧑  作者: Mango

RandomAccessFile介绍

RandomAccessFile类是Java API提供的一个实现随机访问文件的方法的工具类。它可以读写文件,还可以操作文件中的指定位置读写,随机访问文件比较方便。

RandomAccessFile的创建

RandomAccessFile的构造方法有两个参数,第一个是文件路径,第二个是访问模式。访问模式可以为rrwrwsrwd

  • 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的操作
文件指针

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字节
RandomAccessFile的关闭

使用close()方法可以关闭RandomAccessFile对象,释放它所占用的系统资源。

raf.close();  //关闭RandomAccessFile对象
总结

RandomAccessFile类提供了操作文件的很多方法,可以方便地对文件进行读写和指定位置操作。但需要注意的是,RandomAccessFile类只适用于本地文件,不能访问网络文件,也不能访问只读文件系统。此外,文件指针越界可能会抛出EOFException异常。