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

Java IO _RandomAccessFile 类

2011-08-23 14:36 302 查看
1.掌握RandomAccessFile 类的作用

2.可以使用RandomAccess File 读取指定位置的数据

RandomAccessFile 类的主要功能是完成随机读取功能,可以读取指定位置的内容。

假设现在文件中存储了以下的几个内容:



因为在文件中,所有的内容都是按照字节存放的,都珠保存位置。



构造:

public RandomAccessFile(File file,
String mode) throws
FileNotFoundException

实例化此类的时候需要传递 File 类,告诉程序应该操作的是那个文件,之后有个模式,文件的打开模式,

常用的两种模式:

r:读模式

w:只字

rw:读写,如果使用此模式,如果文件不存在,则会自动创建。

import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo01{
// 所有的异常直接抛出,程序中不再进行处理
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ;	// 指定要操作的文件
RandomAccessFile rdf = null ;		// 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"rw") ;// 读写模式,如果文件不存在,会自动创建
String name = null ;
int age = 0 ;
name = "zhangsan" ;			// 字符串长度为8
age = 30 ;					// 数字的长度为4
rdf.writeBytes(name) ;		// 将姓名写入文件之中
rdf.writeInt(age) ;			// 将年龄写入文件之中
name = "lisi    " ;			// 字符串长度为8
age = 31 ;					// 数字的长度为4
rdf.writeBytes(name) ;		// 将姓名写入文件之中
rdf.writeInt(age) ;			// 将年龄写入文件之中
name = "wangwu  " ;			// 字符串长度为8
age = 32 ;					// 数字的长度为4
rdf.writeBytes(name) ;		// 将姓名写入文件之中
rdf.writeInt(age) ;			// 将年龄写入文件之中
rdf.close() ;				// 关闭
}
};


以上完成了写入的操作,每条数据的长度都是12位。

写完之后,开始读取数据。写的时候可以将一个字符串写入。 读的时候需要一个个的以字节的形式读取出来。

import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo02{
// 所有的异常直接抛出,程序中不再进行处理
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ;	// 指定要操作的文件
RandomAccessFile rdf = null ;		// 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件
String name = null ;
int age = 0 ;
byte b[] = new byte[8] ;	// 开辟byte数组
// 读取第二个人的信息,意味着要空出第一个人的信息
rdf.skipBytes(12) ;		// 跳过第一个人的信息
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ;	// 读取一个字节
}
name = new String(b) ;	// 将读取出来的byte数组变为字符串
age = rdf.readInt() ;	// 读取数字
System.out.println("第二个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
// 读取第一个人的信息
rdf.seek(0) ;	// 指针回到文件的开头
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ;	// 读取一个字节
}
name = new String(b) ;	// 将读取出来的byte数组变为字符串
age = rdf.readInt() ;	// 读取数字
System.out.println("第一个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
rdf.skipBytes(12) ;	// 空出第二个人的信息
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ;	// 读取一个字节
}
name = new String(b) ;	// 将读取出来的byte数组变为字符串
age = rdf.readInt() ;	// 读取数字
System.out.println("第三个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
rdf.close() ;				// 关闭
}
};

如果要想操作文件内容的话,可以使用 RandomAccessFile完成。

总结:

1. RandomAccessFile 类的作用即可。

2. RandomAccessFile 类操作起来比较麻烦,所以在IO中会提供专门的输入、输出操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: