RandomAccessFile类直接继承Object类,但它是IO包中的成员,用于随机访问文件,进行读写操作。字符流和字节流只能按顺序对文件进行读和写。RandomAccessFile类内部封装了一个数组,可以通过指针来进行读写操作。
完成读写的原理:就是内部封装了字节的输入和输出流。
1)、RandomAccessFile类的构造方法有两种重载形式:
RandomAccessFile(File file,String mode)
RandomAccessFile(String name,String mode)
第一种是访问file指定的文件,访问形式有参数mode决定
第二种是访问参数那么指定的文件,访问形式有参数mode决定
mode参数有两个常用参数的可选值:“r”和“rw”
“r”: 表示只读 ; “rw”:表示读写
通过构造函数可以看出,该类只能操作文件,而且操作文件还有模式
如果模式为“r”,不会创建文件,会去读取已经存在的文件,如果该文件不存在,则会出现异常
如果模式为“rw”,操作文件不存在会自动创建,如果存在则不会覆盖。
2)、RandomAccessFile类中提供了一系列读取和写入数据的方法:
int getFilePointer():获取文件读写指针所在的位置
int length():获得文件长度
void seek(long pos):设置文件读写指针到pos个字节处
Void skipBytes(int n):是读写指针跳过n个字节
String readLine():从文件中读取下一行文件
Void writeButes(String s):以字节序列的形式向文件中写入一个字符串。
Void writeInt(int v):以4个字节的形式向文件中写入一个整数
Void writeLong(long v):以8个字节的形式向文件中写入一个long值
Void writeByte(int v):以单字节的形式向文件中写入一个byte值
Void writeBoolean(boolean v):以字节的形式向文件中写入一个boolean值
Viod writeChar(int v):以双字节的形式向文件中写入一个char值Boolean readBoolean():从文件中读取一个boolean值
Byte readByte():从文件中读取一个带符号位的字节
Byte readChar():从文件中读取一个字符
Byte readInt():从文件中读取一个带符号位的整数
Byte readLong():从文件中读取一个带符号位的long值
实例代码如下:
//创建一个文件file
File file=new File("E://RandomAccessFile.txt");
//以读写模式创建RandomAccessFile对象
RandomAccessFile raFile=new RandomAccessFile(file,"rw");
raFile.writeBytes("abcdefghijklmnopqrstuvwxyz");
//打印文件读写指针位置
System.out.println(raFile.getFilePointer());
//打印文件内容,隔一个字节打印一个字节
for (int i = 0; i < raFile.length();i+=2) {
raFile.seek(i);//定位指针
System.out.println((char)raFile.readByte());
打印结果如下:
a
c
e
g
i
k
m
o
q
s
u
w
y
<!--EndFragment-->