InputStream和OutputStream只能单方面的读写文件内容,如果需要随机读写的功能,可以使用RandomAccessFile类。
RandomAccessFile同时实现了DataInput和DataOutput接口,适用于由大小已知的记录组成的文件。
它操作文件内容的时候,就如操作一块内存区域一样,把字节用下标数来定位,在一个文件内向前和向后移动。
主要的方法包括:
RandomAccessFile file = new RandomAccessFile("f:/test.txt","rw");
(1)length() 返回此文件内容的字节长度
int s = file.length();
(2)getFilePointer() 返回到此文件开头的偏移量(以字节为单位)
int temp = file.getFilePointer() ;
(3)seek(long pos) 设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
file.seek(1); //把指针设置到i位置
(4)read() 和 write() 读取和写入字节文件
byte b = (byte)file.read();
char a = (char)b;
file.write('a');
只有RandomAccessFile支持搜寻方法,并且只适用于文件。
RandomAccessFile 的大多数方法都会跑出IOException,要针对不同情况,做出不同的响应和处理。