JAVA学习笔记(三十五)- 随机读写文件 RandomAccessFile

RandomAccessFile类

/*
 * RandomAccessFile类,随机读写文件
 * 
 * 数据分段要有规律,每段大小相等,可以将每段数据设置为较大的值,足以存在每一个段的数据
 * 
 */
public class Test04 {
    public static void main(String[] args) throws IOException {
        //writeFile();
        readFile();
    }

    // 写入数据
    public static void writeFile() throws IOException {
        //以读写模式创建一个RandomAccessFile实例
        RandomAccessFile raf=new RandomAccessFile("D:\\Java\\aaa.txt", "rw");
        raf.write("张三".getBytes());
        raf.write(97);
        raf.writeUTF("欢迎来到南京网博!");
        raf.writeInt(20);
        raf.writeBoolean(true);
        raf.writeDouble(12.5);

        raf.write("张三".getBytes());
        raf.seek(20);
        raf.writeInt(20);
        raf.write("李四".getBytes());
        raf.seek(24*1+20);
        raf.writeInt(18);

        //将指针移动到第四个学生的位置,空出第三个学生
        raf.seek(24*3); 
        raf.write("赵小六".getBytes());
        raf.seek(24*3+20);
        raf.writeInt(23);

        System.out.println("写入文件成功!");
        raf.close();
    }

    //读取数据
    public static void readFile() throws IOException{
        RandomAccessFile raf=new RandomAccessFile("D:\\Java\\aaa.txt", "rw");
        String name=new String(buffer);
        System.out.println("前6个字节:"+name);

        int data=raf.read();
        System.out.println("第7个字节:"+(char)data);

        String welcome=raf.readUTF();
        System.out.println("第8个字节及之后:"+welcome);
        raf.seek(24*3);
        byte[] buffer=new byte[20];
        int num=raf.read(buffer);
        System.out.println(num);
        System.out.println(Arrays.toString(buffer));
        String name=new String(buffer,0,num);
        int age=raf.readInt();
        System.out.println("第四个学生的信息:");
        System.out.println("姓名:"+name+",年龄:"+age);


        System.out.println("当前指针的位置:"+raf.getFilePointer());


        raf.close();
    }
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。