12.4.2 RandomAccessFile类

12.4.2 RandomAccessFile类

前面介绍的文件存取方式属于顺序存取,即只能从文件的起始位置向后顺序读写。

Java.io包提供的RandomAccessFile类是随机文件访问类,该类的对象可以引用与文件位置指针有关的成员方法,读写任意位置的数据,实现对文件的随机读写操作。文件的随机存取要比顺序存取更加灵活。

与输入/输出流类相比,RandomAccessFile类有如下两点不同:

• RandomAccessFile类是直接继承自对象类Object,同时实现了DataInput接口和DataOutput接口。

因为RandomAccessFile类实现了DataInput接口和DataOutput接口,所以它既可以作为输入流,又可以作为输出流。

RandomAccessFile类之所以允许随机访问文件,是因为它定义了一个文件当前位置指针,文件的存取都是从文件当前位置指针指示的位置开始的。通过移动这个指针,就可以从文件的任何位置开始进行读/写操作。

1.构造方法

img527

说明:filename是一个文件对象,mode是访问方式,r表示读,w表示写,rw表示既可以读又可以写。创建文件时若出现问题,将抛出FileNotFoundException异常。

例如:方法1:

img528

创建了随机存取文件randomFile1,文件名为“aaa.txt”,属性为可读可写文件。

方法2:

img529

创建了随机存取文件randomFile2,文件名为“bbb.txt”,属性为只读文件。

2.常用方法

pubic long getFilePointer()

返回文件指针。

pubic long length()

返回文件长度。

pubic void seek(long pos)

文件指针到达位置pos

public int read()

从文件读入一个字符。

public int read(byte[] b)

从文件读入b.length个字节存入数组b中。

public int read(byte[] b,int off,int len)

从文件当前位置指针为off开始读入len个字节存入数组b中。

public String readLine()

从文件读入一行字节。

public void write(int b)

向文件中写入字节b。

public void write(byte[] b)

把数组b中的字节全部写入文件中。

public void write(byte[] b,int off,int len)

把数组b中从off位置开始,长度为len个字节数组的数据写入文件中。