随机访问流
RandomAccessFile概述
RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问(在文件中的任意位置)文件的读取和写入。
例子1:RandomAccessFile的使用
import java.io.IOException;
import java.io.RandomAccessFile;
/*
* 随机访问流:
* RandomAccessFile类不属于流,是Object类的子类。
* 但它融合了InputStream和OutputStream的功能。
* 支持对文件的随机访问读取和写入。
*
*public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式。
* 模式有四种,我们最常用的一种叫"rw",这种方式表示我既可以写数据,也可以读取数据
*/
public class RandomAccessFileDemo {
publicstatic void main(String[] args) throws IOException {
write();
read();
}
privatestatic void read() throws IOException {
//创建随机访问流对象
RandomAccessFileraf = new RandomAccessFile("raf.txt", "rw");
inti = raf.readInt();
System.out.println(i);
//该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。
System.out.println("当前文件的指针位置是:"+ raf.getFilePointer());
charch = raf.readChar();
System.out.println(ch);
System.out.println("当前文件的指针位置是:"+ raf.getFilePointer());
Strings = raf.readUTF();
System.out.println(s);
System.out.println("当前文件的指针位置是:"+ raf.getFilePointer());
//我不想重头开始了,我就要读取a,怎么办呢?
raf.seek(4);
ch= raf.readChar();
System.out.println(ch);
}
privatestatic void write() throws IOException {
//创建随机访问流对象
RandomAccessFileraf = new RandomAccessFile("raf.txt", "rw");
//怎么玩呢?
raf.writeInt(100);
raf.writeChar('a');
raf.writeUTF("中国");
raf.close();
}
}
运行结果:
100
当前文件的指针位置是:4
a
当前文件的指针位置是:6
中国
当前文件的指针位置是:14
a