RandomAccessFile类

本章目标

掌握RandomAccessFile类的作用

可以使用RandomAccessFile读取指定位置的数据

 

RandomAccessFile

之前的File类只是针对文件本身进行操作的,而如果要想对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机的读取一个文件中指定位置的数据,例如,现在假设在文件中保存了以下的三个数据:

——zhangsan,30

——lisi,31

——wangwu,32 


 

RandomAccessFile类的常用操作方法


 

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() ;// 关闭
	}
/* 结果:仅有
 * zhangsan
 * */
};

 

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() ;// 关闭
	}
/* 结果:
 * 第二个人的信息 --> 姓名:lisi    ;年龄:31
 * 第一个人的信息 --> 姓名:zhangsan;年龄:30
 * 第三个人的信息 --> 姓名:wangwu  ;年龄:32
 * */
};

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值