您的位置:首页 > 编程语言 > Java开发

Java的RandomAccessFile对文件内容进行读写

2015-09-01 20:55 721 查看
RandomAccessFile是Java提供的对文件内容的访问,她既可以读文件,也可以写文件,并且RandomAccessFile支持随机访问文件,也就是说他可以指定位置进行访问。

我们知道Java的文件模型,文件硬盘上的文件是byte byte byte的字节进行存储的,是数据的集合。下面就是用这个类的步骤。

(1)打开指定的文件,有两种模式“rw”(读写) “r”(只读),创建对象,并且指定file和模式,例如:

RandomAccessFile ac=new RandomAccessFile(file,”rw”);

因为它支持随机访问文件,所以他引入了指针,可以通过指针来写入写出在指定的位置。文件指针,打开文件时指针在开头pointer=0

(2)RandomAccessFile的往文件中写的方法(还有其他的写方法)

Ac.write(int)----->只能写一个字节(后八位),同时文件指针也会移动,指向下一个位置。

(3)RandomAccessFile读的方法(还有其他的读方法)

int b=ac.read()--->读一个字节

(4)文件读写完毕后必须要把他关闭,调用close()的方法。下面就是例子:

//创建相对路径的文件,就是在这个项目中创建一个文件夹
File file=new File("random");
if(!file.exists()) {
file.mkdir();
}
File fileName=new File(file,"javaio.txt");
if(!fileName.exists()) {
fileName.createNewFile();//创建文件
}
//创建一个RandomAccessFile的对象,并指定模式rw,能读能写,
//注意:必须是文件,不能是路径
RandomAccessFile raf=new RandomAccessFile(fileName,"rw");
//获取此时的文件指针的位置,起始位置为0
System.out.println(raf.getFilePointer());
//向文件中写入字符A,字符类型有两个字节,但她写入的是后八位的字节
//字符A正好可以用后八位的字节表示出来
raf.write('A');
//字符的位置会自动向后移动,文件指针会向后自动移动
System.out.println("输入一个字符之后,文件指针的位置"+raf.getFilePointer());
raf.write('B');

//每次write只能写入一个字节,如果要把i写进去,就需要写四次
int i=0x7fffffff;
raf.write(i>>>24 & 0xff);//写入高八位的
raf.write(i>>>16 & 0xff);
raf.write(i>>>8   & 0xff);
raf.write(i);//写入低八位
System.out.println("写入整数的时候文件指针的位置是"+raf.getFilePointer());

/**
* writeInt()的内置方法
*  public final void writeInt(int v) throws IOException {
write((v >>> 24) & 0xFF);
write((v >>> 16) & 0xFF);
write((v >>>  8) & 0xFF);
write((v >>>  0) & 0xFF);
//written += 4;
}
*/

//也可以直接写入int整数
raf.writeInt(i);

//写入一个汉字,汉字为两个字节
String str="欢迎学习java";
byte[] b=str.getBytes("gbk");
raf.write(b);
System.out.println("此时的长度为"+raf.length());

//读文件必须将文件指针放在开头位置
raf.seek(0);
byte[] buf=new byte[(int)raf.length()];
raf.read(buf);//将内容写入buf字节数组中

String  str1=new String(buf,"gbk");
System.out.println("文件中的内容为"+str1);
raf.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: