(Java)RandomAccessFile 类

File 类只是针对文件本身进行操作,而如果要对文件内容进行操作,则可以使用 RandomAccessFile 类,此类属于随机读取类,可以随机读取一个文件中指定位置的数据

一、RandomAccessFile 类的常用操作方法

在这里插入图片描述
如果使用 rw 方式声明 RandomAccessFile 对象时,要写入的文件不存在,系统将自动进行创建

import java.io.File;
import java.io.RandomAccessFile;

public class Root{
    //直接抛出异常,程序中不再处理
    public static void main(String[] args) throws Exception {
        File f = new File("D:" + File.separator + "test.txt");//指定要操作的文件
        RandomAccessFile rdf = null;//声明一个 RandomAccessFile 类对象
        rdf = new RandomAccessFile(f,"rw");//以读写方式打开文件,会自动创建新文件夹
        String name = null;
        int age = 0;
        name = "str1";
        age = 30;
        rdf.writeBytes(name);//将姓名写入文件之中
        rdf.writeInt(age);//将年龄写入文件之中
        name = "str2";
        age = 31;
        rdf.writeBytes(name);//将姓名写入文件之中
        rdf.writeInt(age);//将年龄写入文件之中
        rdf.close();//关闭文件
    }
}

这里的年龄是按照整型格式写入的, 所以直接打开文件时不可见的

二、使用RandomAccessFile类写入数据

读取时直接使用 r 的模式即可,以只读的方式打开文件
读取时所有的字符串只能按照 byte 数组的方式读取出来,而且所有的长度是 8 位。

import java.io.File;
import java.io.RandomAccessFile;

public class Test{
    public static void main(String[] args) throws Exception{
        File f = new File("D:" + 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);
        for (int i=0;i<b.length;i++){
            b[i] = rdf.readByte();//循环读取出前8个内容
        }
        name = new String(b);//将读取出来的byte数组变为 String
        age = rdf.readInt();//读取数字
        System.out.println("第二个人信息 --> 姓名:" + name + ";年龄:" + age);
        rdf.seek(0);//指针回到文件的开头
        b = new byte[8];//准备空间读取姓名
        for (int i=0;i<b.length;i++){
            b[i] = rdf.readByte();//循环读取出前8个内容
        }
        name = new String(b);//将读取出来的 byte 数组变为 String
        age = rdf.readInt();//读取数字
        System.out.println("第一个人信息 --> 姓名:" + name + ";年龄:" + age);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南淮北安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值