首页 > 编程笔记 > Java笔记 阅读:13

Java RandomAccessFile类:随机读写文件(附带实例)

Java 的 RandomAccessFile 类包装了一个随机访问的文件,直接继承于 Object 类而非 InputStream/OutputStream 类。

对于 InputStream 和 OutputStream 来说,它们的实例都是顺序访问流,而且读取数据和写入数据必须使用不同的类。随机文件突破了这种限制。在 Java 中,类 RandomAccessFile 提供了随机访问文件的方法,它可以实现读写文件中任何位置的数据,允许使用同一个实例对象对同一个文件交替进行读写操作。

RandomAccessFile 类的常用操作方法如下表所示:

表:RandomAccessFile 类的常用操作方法
方法 方法说明
long getFilePointer() 返回文件指针的当前位置
long length() 返回文件的长度
void close() 关闭操作
int read(byte[] b) 将内容读取到一个 byte 数组中
byte readByte() 读取一个字节
int readInt() 从文件中读取整型数据
void seek(long pos) 设置读指针的位置
void writeBytes(String s) 将一个字符串写入文件,按字节的方式处理
void writeInt(int v) 将一个 int 型数据写入文件,长度为 4 位
int skipBytes(int n) 指针跳过多少字节

RandomAccessFile 有如下两种构造方法:
mode 为 r,以只读方式打开,Mode 为 rw,可读可写,不存在则创建。

采用 RandomAccessFile 类对象读写文件内容的原理是将文件看作字节数组,并用文件指针指示当前位置。初始状态下,文件指针指向文件的开始位置。读取数据时,文件指针会自动移过读取过的数据,还可以改变文件指针的位置。

【实例 1】向文件写入数据,然后从头输出文件内容到显示器。
import java.io.RandomAccessFile;
import java.io.IOException;

public class RandomAccessFileExample {
    public static void main(String[] args) {
        String fileName = "example.txt";
        RandomAccessFile file = null;
        try {
            // 创建 RandomAccessFile 对象
            file = new RandomAccessFile(fileName, "rw");
            // 写入数据到文件
            file.write("Hello, World!".getBytes());
            // 定位文件指针到文件开头
            file.seek(0);
            // 读取文件内容并输出到控制台
            byte[] buffer = new byte[1024];
            int bytesRead = file.read(buffer);
            System.out.println(new String(buffer, 0, bytesRead));
            // 关闭 RandomAccessFile 对象
            file.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (file != null) {
                try {
                    file.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
程序执行结果为:

Hello, World!

相关文章