当我们需要在指定位置读取文件,或者写入文件时,使用普通的流读写实现是比较麻烦的,jdk为我们提供了随机流api,可以让我们在任意位置读取或写入文件内容。
public class RandomStreamTest {
public static void main(String[] args) throws Exception {
randomWrite();
System.out.println(randomRead());
}
public static void randomWrite() throws Exception{
RandomAccessFile write = new RandomAccessFile("E:\\1.txt","rw");
write.seek(0);
write.write("hello".getBytes());
write.seek(6);
write.write("world".getBytes());
write.close();
}
public static String randomRead() throws Exception{
RandomAccessFile read = new RandomAccessFile("E:\\1.txt","r");
read.seek(6);
byte[] buf = new byte[1024];
int len = read.read(buf);
String str = new String(buf,0,len);
read.close();
return str;
}
}
对于创建RandomAccessFiledui'xia对象,第二个参数共有4种:
- r:只读
- rw:可读可写
- rws:在rw的基础上,要求对文件的内容或元数据的修改同步到底层存储设备上
- rwd:在rw的基础上,要求对文件的内容的修改同步到底层存储设备上
当我们对一个超大文件进行校验的时候,我们也可以使用随机流对文件进行分段读取操作。