说明:这里的随机是针对“不随机、按顺序访问”而言的。
/**
* Created by liwei on 16/7/20.
*/
/*
* 随机访问流:
* RandomAccessFile类不属于流,是Object类的子类。
* 但它融合了InputStream和OutputStream的功能。
* 支持对文件的随机访问读取和写入。
*
* public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式。
* 模式有四种,我们最常用的一种叫"rw",这种方式表示我既可以写数据,也可以读取数据
*/
public class RandomAccessFileDemo {
public static void main(String[] args) throws IOException {
read();
//write();
}
public static void read() throws IOException{
// 创建随机访问流对象
RandomAccessFile raf = new RandomAccessFile("raf.txt","rw");
Integer i = raf.readInt();
// 该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。
System.out.println("当前文件的指针位置:" + raf.getFilePointer());
Character c = raf.readChar();
System.out.println("当前文件的指针位置:" + raf.getFilePointer());
String str = raf.readUTF();
System.out.println("当前文件的指针位置:" + raf.getFilePointer());
System.out.println(i);
System.out.println(c);
System.out.println(str);
// 如果我不想从头开始
// 我想从中间这个状态读取
raf.seek(6);
String str1 = raf.readUTF();
System.out.println(str1);
raf.close();
}
public static void write() throws IOException{
// 创建随机访问流对象
// 随机访问流对象有几种模式,请参看文档
RandomAccessFile raf = new RandomAccessFile("raf.txt","rw");
raf.writeInt(100);
raf.writeChar('a');
raf.writeUTF("李威");
raf.close();
}
}