在指定的路径下创建一个文件夹并将三个人的姓名和年龄写入到文件夹当中,然后在从该文件夹当中进行随机读取文件当中的内容的操作
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFile01 {
public static void main(String[] args) throws Exception{
File f=new File("C:\\Users\\xinle\\Desktop"+File.separator+"test.txt");//在指定的路径下创建一个文件夹
RandomAccessFile rdf=new RandomAccessFile(f,"rw");//以读写的方式打开指定路径下的文件夹,randomAccessFile的构造方法
//将会进行异常的产生与抛出,所以要对产生的异常机制进行抛出处理,所以在main方法当中进行了一个异常的抛出操作
String name=null;
int age=0;
//将第一个人的信息输入到指定的文件当中
name="zhangsan";
age=30;
rdf.writeBytes(name);//将字符串转化为多个字节内容写入到指定的文件当中
rdf.writeInt(age);
name="lisi ";//名字所占的字符为8位
age=31;
rdf.writeBytes(name);
rdf.writeInt(age);
name="wangwu ";
age=32;
rdf.writeBytes(name);
rdf.writeInt(age);
rdf.close();
}
}
程序的运行结果为:
如上图在指定的路径下创建一个记事本文件,并将相应的内容写入到文件当中
将指定路径下的文件当中的内容进行随机读取,即先读取第二个人的信息然后读取第一个人的信息
import java.io.File;
import java.io.RandomAccessFile;
public class RandomAccessFileDemo02 {
//注意:每个名字的长度必须要相同都为8位,当位数少的必须要用空格进行补全,否则程序会发生错误
public static void main(String[] args) throws Exception{
File f=new File("C:\\Users\\xinle\\Desktop"+File.separator+"test.txt");
RandomAccessFile rdf=null;
rdf=new RandomAccessFile(f,"r");//建立随机读取文件对象用于读取指定的文件内容
String name=null;
int age=0;
byte b[]=new byte[8];
rdf.skipBytes(12);//文件指针先向后移动12位正好跳跃过第一个人的信息而去读取第二个人的信息,名字占8位年龄为int型数据占12位,so一个人为12位信//息
for(int i=0;i<b.length;i++)
{
b[i]=rdf.readByte();//在指定的文件当中读取一个字节
}
name=new String(b);//将指定的字节数组转换为字符串
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);//将指定的字节数组转换为字符串
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);
age=rdf.readInt();
System.out.println("第三个人的信息为:->姓名:"+name+";年龄:"+age);
rdf.close();
}
}
程序运行的结果为: