Java RandomAccessFile类的用法(附带实例)
在 Java 中,RandomAccessFile 类既不是输入流类的子类,也不是输出流类的子类。使用 RandomAccessFile 类可以实现以下两个目的:
RandomAccessFile 类常用的构造方法如下:
除了构造方法,RandomAccessFile 类还有如下两个核心的方法:
【实例】RandomAccessFile类的应用。
运行结果为:
- 对一个文件执行读和写的操作。
- 可以访问文件的任意位置,不像其他流只能按照先后顺序读取。
RandomAccessFile 类常用的构造方法如下:
RandomAccessFile(File file,String mode) RandomAccessFile(String name,String mode)其中,mode 用来决定创建的流对文件的访问权利,可以是 r、rw、rws 或 rwd。其中,r 代表只读,rw 代表可读/写,rws 代表同步写入,rwd 代表将更新同步写入。
除了构造方法,RandomAccessFile 类还有如下两个核心的方法:
- void seek(long pos):用来定位流对象读/写文件的位置,使用pos确定读/写位置距离文件开头的字节个数。
- long getFilePointer():获得流的当前读/写位置。
【实例】RandomAccessFile类的应用。
- import java.io.RandomAccessFile;
- public class Example {
- public static void main(String[] args) {
- RandomAccessFile randomf = null;
- try {
- randomf = new RandomAccessFile("D:\\3.txt", "rw");
- // 将若干数据写入文件中
- int[] data = new int[]{3, 8, 34, 333, 78, 21, 24, 43, 93, 555};
- for (int i = 0; i < data.length; i++) {
- // 在文件中写入一个数组元素
- randomf.writeInt(data[i]);
- }
- // 定位到第 4 个字节处
- randomf.seek(4);
- // 读取当前位置的数据
- System.out.println(randomf.readInt());
- // 隔一个读一个数据
- for (int i = 0; i < 10; i += 2) {
- randomf.seek(i * 4);
- System.out.print(randomf.readInt() + "\t");
- }
- System.out.println();
- // 在第 8 个字节的位置插入一个新的数据 38,替换之前的数据 34
- randomf.seek(8);
- randomf.writeInt(38);
- for (int i = 0; i < 10; i++) {
- randomf.seek(i * 4);
- // 输出文件中的每个数据
- System.out.print(randomf.readInt() + "\t");
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (randomf != null) {
- randomf.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
8 3 34 78 24 93 3 8 38 333 78 21 24 43 93 555