首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 文件随机读写类 RandomAccessFile 与常用 IO 流对比速查

     編輯:Java 綜合教學

RandomAccessFile 核心定位

RandomAccessFile 非流,实现 DataInput/DataOutput,支持**随机访问**(可读可写、可移动指针 `seek(pos)`),适合需定位修改的场景(如断点续传、修改文件中间内容)。但**不适合大批量顺序读写**,性能不如缓冲流。

常用文件操作类对比表

类/接口分类核心能力典型场景
File文件元数据创建/删除/判断存在/重命名/目录遍历,**不读写内容**文件管理
FileWriter字符输出流写文本,支持追加模式 new FileWriter(file, true)简单文本写入
FileReader字符输入流读文本,**需配合 BufferedReader** 逐行高效读取简单文本读取
BufferedReader/Writer缓冲字符流**文本首选**,按行读 readLine()、缓冲写 newLine()配置文件、日志、CSV
BufferedInputStream/OutputStream缓冲字节流**二进制首选**,图片、视频、序列化对象读写文件拷贝、资源下载
Files.newBufferedReaderNIO.2 (JDK7+)指定编码 Charset.forName("UTF-8"),返回 BufferedReader现代文本读取标准写法
Scanner扫描器按正则分隔符 useDelimiter("\\s+") 切割,解析基本类型控制台输入、简单文本解析
RandomAccessFile随机访问文件seek() 移动指针、read/write 基本类型、**支持读写同一文件**断点续传、随机修改、内存映射源

RandomAccessFile 快速上手

// "rw" 读写模式
try (RandomAccessFile raf = new RandomAccessFile("data.dat", "rw")) {
    // 写基本类型
    raf.writeInt(100);
    raf.writeUTF("Hello");
    
    // 移动指针到开头读取
    raf.seek(0);
    int i = raf.readInt();
    String s = raf.readUTF();
    
    // 获取/设置文件长度
    long len = raf.length();
    raf.setLength(200); // 截断或扩展
}

选型建议

  • **文本文件、配置、日志** → Files.newBufferedReader/Writer (JDK7+) 或 BufferedReader/Writer。
  • **图片、视频、二进制流** → BufferedInputStream/OutputStream。
  • **需随机定位、修改文件中间、断点续传** → RandomAccessFile。
  • **超大文件、高性能、进程间共享** → FileChannel + MappedByteBuffer (内存映射)。
  • **简单控制台交互/按正则分割** → Scanner。

参考资料

Java IO 流体系详解(CSDN)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved