📜  Java.io.RandomAccessFile类(1)

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

Java.io.RandomAccessFile类介绍

Java.io.RandomAccessFile类提供了一种访问文件的机制,使我们可以访问或操作文件的任意位置而不是只能从开头或结尾处进行读取或写入。该类也可用于读取和写入二进制文件。

构造函数

Java.io.RandomAccessFile类提供了两个构造函数:

  1. RandomAccessFile(File file, String mode): 用于读取和写入已存在的文件。
  2. RandomAccessFile(String filename, String mode): 用于读取和写入已存在的文件。

其中,mode参数表示以只读("r")、读写("rw")、只写("w")模式打开文件。

常用方法
  • read(): 从文件中读取一个字节,返回读取到的字节(0到255)。
  • read(byte[] b): 从文件中读取一组字节并将它们存储在指定的字节数组b中。
  • read(byte[] b, int off, int len): 从文件中读取最多len个字节,存储在指定的字节数组b中,开始存储的索引为off
  • write(int b): 向文件写入一个字节。
  • write(byte[] b): 向文件中写入一组字节。
  • write(byte[] b, int off, int len): 向文件中写入最多len个字节,从指定的字节数组b中第off个字节开始。
  • seek(long pos): 将文件指针设置为指定的偏移量pos
  • length(): 返回文件的长度。
  • close(): 关闭文件。
使用示例
import java.io.RandomAccessFile;
import java.io.IOException;

public class RandomAccessFileExample {
    public static void main(String[] args) {
        String fileName = "example.txt";
        try {
            // 创建RandomAccessFile对象用于读取文件
            RandomAccessFile raf = new RandomAccessFile(fileName, "r");
            // 读取文件,一次读取一个字节
            int data;
            while ((data = raf.read()) != -1) {
                System.out.print((char) data);
            }
            System.out.println();

            // 创建RandomAccessFile对象用于写入文件
            raf = new RandomAccessFile(fileName, "rw");
            // 设置文件指针的位置为文件结尾
            raf.seek(raf.length());
            // 写入数据
            raf.writeBytes("Hello, World!");
            // 关闭文件
            raf.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上示例中,首先使用RandomAccessFile类读取了一个文本文件(example.txt),并将文件中的内容打印出来。接着,创建了一个新的RandomAccessFile对象用于写入文件,并将文件指针设置在文件结尾处,最后向文件中写入了一串字符串。程序最后关闭了文件。

以上就是Java.io.RandomAccessFile类的介绍,它为我们提供了一种更高效的文件操作方式。