文件是具有文件名并且存储在外部存储器中的相关信息的集合。通常情况下,计算机处理的大量数据都是以文件形式存放在外部存储器中的。如果要访问存放在外部存储器中的数据,必须先按文件的路径找到所指定的文件,然后再从该文件中读取数据。要保存数据也必须先打开或新建一个文件,才能向它写入数据。在学习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类,通过实例化这个类生成对象,实现随机文件的读取.