读取随机文件

        文件是具有文件名并且存储在外部存储器中的相关信息的集合。通常情况下,计算机处理的大量数据都是以文件形式存放在外部存储器中的。如果要访问存放在外部存储器中的数据,必须先按文件的路径找到所指定的文件,然后再从该文件中读取数据。要保存数据也必须先打开或新建一个文件,才能向它写入数据。在学习VB的时候,我们曾学习过,文件分为顺序文件,随机文件,二进制文件.今天我们就来看看使用java读取随机文件.

        随机读写是相对顺序读写而言的,所谓随机读写,是指可以在任何时候将存取文件的指针指向文件内容的任何位置。

		/*
		 // 开发人员:唐欢
		 //功能:读取随机文件
		 //时间:2013-12-15 20:09:04
		 */
		 import java.io.*;
		 public class RandomAccessFileTester
		 {
		 		String Filename;
		 		public RandomAccessFileTester(String Filename)
		 		{
		 			//构造函数,要求初始化随机读写的文件名
		 			this.Filename=Filename;
		 		}
		 		public void writeEmployee(Employee e,int n) throws Exception  //写第几条记录
		 		{
		 			RandomAccessFile ra =new RandomAccessFile(Filename,"rw"); //实例化一个对象ra
		 			ra.seek(n*20);  //将位置指示器移到指定位置上
		 			for(int i=0;i<8;i++)
		 			{
		 					ra.writeChar(e.name[i]);
		 			}
		 			ra.writeInt(e.age);
		 			ra.close();
		 		}
		 		public void readEmployee(int n) throws Exception  //读第n条记录
		 		{
		 			char buf[]=new char[8];
		 			RandomAccessFile ra=new RandomAccessFile(Filename,"r");
		 			ra.seek(n*20);
		 			for(int i=0;i<8;i++)
		 			{
		 				buf[i]=ra.readChar();
		 			}
		 			System.out.print("name:");
		 			System.out.println(buf);
		 			System.out.println("age:"+ra.readInt());
		 			ra.close();
		 		}
		 	public static void  main(String[] args) throws Exception
		 	{
		 		RandomAccessFileTester t=new RandomAccessFileTester("1.txt");
		 		Employee e1=new Employee("zhangsantt",23); //创建第一个雇员
		 		Employee e2=new Employee("小不点",33);  //创建第二个雇员
		 		Employee e3=new Employee("wawa",19); //创建第三个雇员
		 		t.writeEmployee(e1,0);   //写入第一个雇员信息为第0条记录
		 		t.writeEmployee(e3,2);   //写入第三个雇员信息为第2条记录
		 		System.out.println("第一个雇员信息");
		 		t.readEmployee(0);  //读取第0条记录
		 		System.out.println("第三个雇员信息");
		 		t.readEmployee(2);  //读取第2条记录
		 		t.writeEmployee(e2,1);  //写入第二个雇员信息为第一条记录
		 		System.out.println("第二个雇员信息");
		 		t.readEmployee(1);
		 	}
		 }
		 
		 class Employee    //雇员类
		 {
		 	char name[]={'\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000'};  //姓名字符数组,初始状态用8个Unicode编码的空格填满
		 	int age;  //年龄
		 	public Employee(String name,int age) throws Exception    //构造函数
		 	{
		 		if(name.toCharArray().length>8)  //如果字符长度大于8,则只取前8个
		 		{
		 				System.arraycopy(name.toCharArray(),0,this.name,0,8);
		 		}
		 		else   //字符长度小于8,则有几个填几个
		 		{
		 			System.arraycopy(name.toCharArray(),0,this.name,0,name.toCharArray().length);
		 			
		 		}
		 		this.age=age;
		 	}
		 	
		 }

结果:


总结:

        在读取随机文件的时候,我们需要的就是调用java事先给我们封装好了的RandomAccessFile类,通过实例化这个类生成对象,实现随机文件的读取.

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弯_弯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值