Java IO. RandomAccessFile
RandomAccessFile 是IO体系中功能强大的文件内容访问类,声明在java.io包下,但直接继承于java.lang.Object类。并且它实现了DataInput、DataOutput这两个接口,它提供了众多的方法来访问文件内容,既可以读也可以写。与普通的IO流不同的是,RandomAccessFile 支持"随机访问",程序可以直接跳转到文件的任意地方来读写数据。
构造方法:
- public RandomAccessFile(File file, String mode): 创建随机访问文件流,从File参数指定的文件中读取,也可以选择写入。
- public RandomAccessFile(String name, String mode):创建随机访问文件流,从具有指定名称的文件中读取,也可以选择写入。
参数mode指定RandomAccessFile的访问模式:
- r: 以只读方式打开。
- rw:打开支持读取和写入。
- rwd:打开支持读取和写入,并且同步文件内容的更新。
- rws:打开支持读取和写入;并且同步文件内容和元数据的更新。
如果模式为只读r,会去读取一个已经存在的文件,如果读取的文件不存在则会出现异常。如果模式为读写rw,如果文件存在会直接操作,如果文件不存在则会去创建文件。
指针位置相关方法:
- long getFilePointer():获取文件记录指针的当前位置
- void seek(long pos):将文件记录指针定位到pos位置
1、实现数据的读写操作
RandomAccessFile可以作为一个输入流,也可以作为一个输出流
当其作为输出流时,入伙写出到的文件不存在,则在执行过程中自动创建。如果写出到的文件存在,则会对原有文件内容进行覆盖(默认从头覆盖)。
import java.io.*;
public class RandomAccessFileTest {
public static void main(String[] args) {
RandomAccessFile raf1 = null;
RandomAccessFile raf2 = null;
try {
raf1 = new RandomAccessFile("C:\\Users\\Administrator\\Desktop\\test.txt", "r");//只读
raf2 = new RandomAccessFile("C:\\Users\\Administrator\\Desktop\\test1.txt", "rw");//可读写
System.out.println("当前的RandomAccessFile的初始指针位置是:" + raf1.