RandomAccessFile类的使用,随机读写文件。

来源:互联网 发布:免费预算软件 编辑:程序博客网 时间:2024/05/01 20:35

RandomAccessFile类的使用,随机读写文件。

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过getFilePointer 方法读取,并通过 seek 方法设置。

import java.io.*;public class RandomAccessFileDemo01{public static void main(String[] args)throws Exception{          //判断是否是目录File f = new File("d:"+File.separator+"test.txt");          //在创建文件是,使用File.separator读取系统默认的目录格式,有很好的移植性。RandomAccessFile raf = null;raf = new RandomAccessFile(f,"rw");     //读写模式,如果文件不存在,则创建String name=null;int age = 0;name = "zhangsan";age=30;raf.writeBytes(name);             //写入文件中raf.writeInt(age); name = "lisi    ";age=30;raf.writeBytes(name);             //写入文件中raf.writeInt(age); name = "wangwu  ";age=30;raf.writeBytes(name);             //写入文件中raf.writeInt(age); raf.close(); //关闭System.out.println("写入成功!");}}


写入成功后来进行随机读取,用户可以自己操作想要先读的数据。

/*writeByte一次写8个字节,writeInt一次写4个字节,所以读也是。String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。学习了File后进一步学习RandomAccessFile来向文件中写入读出。*/import java.io.*;public class RandomAccessFileDemo02{public static void main(String[] args)throws Exception{          //判断是否是目录File f = new File("d:"+File.separator+"test.txt");           //在创建文件是,使用File.separator读取系统默认的目录格式,有很好的移植性。RandomAccessFile raf = null;   raf = new RandomAccessFile(f,"r");                           //读模式String name=null;int age = 0;byte[] b = new byte[8];raf.skipBytes(12);                                           //跳过12个字节,也就是第一个人的信息                                        for(int i=0;i<b.length;i++){b[i]=raf.readByte();}name = new String(b);                                       //将读出的字节转化成字符串String中的方法age = raf.readInt();System.out.println("第二个人的信息--->姓名:"+name+"年龄:"+age);//读取第一个人的信息raf.seek(0);                                                //指针回到文件的开头                               for(int i=0;i<b.length;i++){b[i]=raf.readByte();}name = new String(b);                                       //将读出的字节转化成字符串String中的方法age = raf.readInt();System.out.println("第一个人的信息--->姓名:"+name+"年龄:"+age);//读取第三个人的信息raf.skipBytes(12);                                           //跳过12个字节,跳过第二个人的信息,因为读完了第一个人raf指向在了第二个人的头                                     for(int i=0;i<b.length;i++){b[i]=raf.readByte();}name = new String(b);                                       //将读出的字节转化成字符串String中的方法age = raf.readInt();System.out.println("第三个人的信息--->姓名:"+name+"年龄:"+age);}}

主要注意头注释里面的内容。

0 0
原创粉丝点击