关键词搜索

源码搜索 ×
×

(Java)RandomAccessFile 类

发布2020-02-07浏览910次

详情内容

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);
        }
    }
    
      23
    • 24
    • 25
    • 26
    • 27
    • 28

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载