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

Java中如何使用随机存取文件RandomAcessFile类?

2016-08-16 21:56 471 查看
 InputStream和OutputStream都只是单方面的读和写文件的内容,如果有随机的读取和写入文件内容的需要那该怎么办?

Java为我们提供了一个RandomAcessFile类,它就是专门用来随机存取文件的内容的。

  RandomAcessFile操作文件内容的时候,就好像操作一块内存区域一样。把字节用下标数字来进行定位,通过调用RandomAcessFile的API方法,把指针的指向进行一定,达到随机存取数据的目的,主要的方法如下:

length()  得到文件内容的字节长度

seek()    设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。

read()和write() 读取和写入字节数据

以下是将文件中的所有字母a换成字母的c的示例程序。

public class Test5 {

public static void main(String[] args) {
try {
//创建随机读取文件对象
RandomAccessFile file=new RandomAccessFile("D://1.txt", "rw");
//遍历file的字节的数据
try {
for (int i = 0; i < file.length(); i++) {
byte b=(byte) file.read();//read()方法读取一个字节
char c=(char) b;//转换成char类型
if(c=='a'){
file.seek(i);
file.write('c');//这个位置写入新的字符
}
}
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
说明:RandomAcessFile的大多数方法都会抛出IOException,以上示例程序只是简单的try-catch,而在实际的开发中,应该针对不同的情况,不同的异常做出不同的响应。

 

总结:

RandomAcessFile的使用思路主要包括以下一些项目:

1.用length()方法获取文件的内容长度

2.用seek()方法随机的到达任何需要存储数据的地方

3.调用read()方法获取当前位置的数据,用write()方法写入数据

4.完成需要后,调研close方法关闭文件的打开
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息