java.io.RandomAccessFile 介绍

java.io.RandomAccessFile 是 Java 标准库中提供的一个类,允许对文件进行随机访问读写操作。与 FileInputStream 和 FileOutputStream 不同,RandomAccessFile 可以读取和写入同一个文件,并且可以在文件的任意位置进行读写操作。它既可以作为输入流,也可以作为输出流使用。

RandomAccessFile 的主要功能

  1. 随机访问文件:可以通过设置文件指针在文件的任意位置进行读写操作。
  2. 读取和写入基本数据类型:支持读取和写入基本数据类型,如 intlongfloatdoublebytecharString 等。
  3. 双向操作:既可以进行读操作,也可以进行写操作。

构造方法

public RandomAccessFile(File file, String mode) throws FileNotFoundException
public RandomAccessFile(String name, String mode) throws FileNotFoundException
  • file:要操作的文件对象。
  • name:要操作的文件名。
  • mode:文件的访问模式。常见的模式有:
    • "r":以只读方式打开文件。
    • "rw":以读写方式打开文件。如果文件不存在,则创建该文件。
    • "rws":以读写方式打开文件,并对文件的内容或元数据的每个更新都同步写入到底层存储设备。
    • "rwd":以读写方式打开文件,并对文件内容的每个更新都同步写入到底层存储设备。

常用方法

  • read():读取一个字节并返回(返回值是 0 到 255 之间的 int 值),如果已经到达文件末尾,则返回 -1。
  • read(byte[] b):读取字节数组 b 的数据。
  • readInt()readLong()readUTF() 等:读取特定数据类型。
  • write(int b):将一个字节写入文件。
  • write(byte[] b):将字节数组 b 的内容写入文件。
  • writeInt(int v)writeLong(long v)writeUTF(String str) 等:写入特定数据类型。
  • seek(long pos):将文件指针定位到 pos 位置。
  • getFilePointer():返回当前文件指针的位置。
  • length():返回文件的长度。
  • setLength(long newLength):设置文件的长度。

示例代码

下面是一个示例,演示如何使用 RandomAccessFile 进行文件的读写操作:

import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileExample {
    public static void main(String[] args) {
        try {
            // 创建一个RandomAccessFile对象,以读写模式打开文件
            RandomAccessFile raf = new RandomAccessFile("example.txt", "rw");

            // 写入数据
            raf.writeInt(12345);
            raf.writeUTF("Hello, World!");

            // 获取文件指针的位置
            long pointer = raf.getFilePointer();
            System.out.println("Current file pointer position: " + pointer);

            // 将文件指针移动到文件开头
            raf.seek(0);

            // 读取数据
            int number = raf.readInt();
            String text = raf.readUTF();

            // 打印读取的数据
            System.out.println("Read int: " + number);
            System.out.println("Read UTF: " + text);

            // 关闭文件
            raf.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,RandomAccessFile 用于将一个整数和一个字符串写入文件,然后将文件指针移回到文件的开头,并从文件中读取并打印这些数据。这展示了 RandomAccessFile 的随机访问能力,即可以在文件的任意位置进行读写操作。

注: raf.writeInt(12345); 整数数据,记事本打开不可见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值