12.4.2 RandomAccessFile类
前面介绍的文件存取方式属于顺序存取,即只能从文件的起始位置向后顺序读写。
Java.io包提供的RandomAccessFile类是随机文件访问类,该类的对象可以引用与文件位置指针有关的成员方法,读写任意位置的数据,实现对文件的随机读写操作。文件的随机存取要比顺序存取更加灵活。
与输入/输出流类相比,RandomAccessFile类有如下两点不同:
• RandomAccessFile类是直接继承自对象类Object,同时实现了DataInput接口和DataOutput接口。
因为RandomAccessFile类实现了DataInput接口和DataOutput接口,所以它既可以作为输入流,又可以作为输出流。
RandomAccessFile类之所以允许随机访问文件,是因为它定义了一个文件当前位置指针,文件的存取都是从文件当前位置指针指示的位置开始的。通过移动这个指针,就可以从文件的任何位置开始进行读/写操作。
1.构造方法
说明:filename是一个文件对象,mode是访问方式,r表示读,w表示写,rw表示既可以读又可以写。创建文件时若出现问题,将抛出FileNotFoundException异常。
例如:方法1:
创建了随机存取文件randomFile1,文件名为“aaa.txt”,属性为可读可写文件。
方法2:
创建了随机存取文件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个字节数组的数据写入文件中。