java--基础--16.10--IO流--随机访问流RandomAccessFile
1、RandomAccessFile
RandomAccessFile extends Object implements DataOutput, DataInput, Closeable
- RandomAccessFile类不属于流,是Object类的子类。
- 融合了InputStream和OutputStream的功能。
- 支持对文件的随机访问读取和写入。
2、构造方法
- public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式。
- RandomAccessFile(File file, String mode):创建从中读取和向其中写入的随机访问文件流,该文件由 File 参数指定
- mode:
- “r”:以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。
- “rw”:打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
- “rws”:打开以便读取和写入,对于 “rw”,还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
- “rwd”:打开以便读取和写入,对于 “rw”,还要求对文件内容的每个更新都同步写入到底层存储设备。
3、常用方法
- getFilePointer():返回此文件中的当前偏移量。
- void seek(long pos):设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
- long read基本类型(基本类型 v)
- void write基本类型(基本类型 v)
4、案例
// 创建随机访问流对象
RandomAccessFile wr = new RandomAccessFile("text.txt", "rw");
wr.writeInt(12);
wr.writeChar('b');
wr.writeUTF("创建随机访问流对象");
wr.close();
// 创建随机访问流对象
RandomAccessFile re = new RandomAccessFile("text.txt", "rw");
int i = re.readInt();
System.out.println(i);
// 通过 getFilePointer方法读取文件指针
System.out.println("当前文件的指针位置是:" + re.getFilePointer());
char ch = re.readChar();
System.out.println(ch);
System.out.println("当前文件的指针位置是:" + re.getFilePointer());
String s = re.readUTF();
System.out.println(s);
System.out.println("当前文件的指针位置是:" + re.getFilePointer());
//通过 seek 方法设置文件指针
re.seek(4);
ch = re.readChar();
System.out.println(ch);
输出:
12
当前文件的指针位置是:4
b
当前文件的指针位置是:6
创建随机访问流对象
当前文件的指针位置是:35
b