Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile

1. 随机访问流RandomAccessFile

RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。

RandomAccessFile的构造方法:

构造方法摘要
RandomAccessFile(File file, String mode)
          创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。
RandomAccessFile(String name, String mode)
          创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

2.  代码示例:

 1 package cn.itcast_05;
 2 
 3 import java.io.IOException;
 4 import java.io.RandomAccessFile;
 5 
 6 /*
 7  * public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式。
 8  *         模式有四种,我们最常用的一种叫"rw",这种方式表示我既可以写数据,也可以读取数据 
 9  */
10 public class RandomAccessFileDemo {
11     public static void main(String[] args) throws IOException {
12         // write();
13         read();
14     }
15 
16     private static void read() throws IOException {
17         // 创建随机访问流对象
18         RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");
19 
20         int i = raf.readInt();
21         System.out.println(i);
22         // 该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。
23         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());
24 
25         char ch = raf.readChar();
26         System.out.println(ch);
27         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());
28 
29         String s = raf.readUTF();
30         System.out.println(s);
31         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());
32 
33         // 我不想重头开始了,我就要读取a,怎么办呢?通过seek定位方法可以实现随机访问的功能
34         raf.seek(4);
35         ch = raf.readChar();
36         System.out.println(ch);
37     }
38 
39     private static void write() throws IOException {
40         // 创建随机访问流对象
41         RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");
42 
43         // 怎么玩呢?
44         raf.writeInt(100);
45         raf.writeChar('a');
46         raf.writeUTF("中国");
47 
48         raf.close();
49     }
50 }

运行效果,如下:

原文地址:https://www.cnblogs.com/hebao0514/p/4876106.html