RandomAccessFile的基本操作

RandomAccessFile类 是java提供的对文件内容的访问,即可以读取文件,也可以写文件。

RandomAccessFile类支持随机访问文件,可以访问文件的任意位置

********RandomAccessFile类实现步骤
(1)java文件的模型
在硬盘上的文件是byte byte byte 存储的,是数据的集合
(2)打开文件
有两种模式“rw”(读写) “r”(只读)
RandomAccessFile raf = new RandomAccessFile(new File(“路径”),”rw”);
文件指针,打开文件时指针在开头 pointer = 0;
(3)写方法
raf.write(int)—>只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
(4)读方法
int b = raf.read()—>读一个字节
(5)关闭流
文件读写完成以后一定要关闭流(Oracle官方说明)

****************RandomAccessFile 类的方法

raf.getFilePointer();—>获取指针的位置

//迅雷实现下载功能,多个进程同时下载一个文件的不同位置,然后将下载后的文件拼接在一起

raf.writeInt(i);//写入一个int
//writeInt()方法的内置代码
raf.write(i>>>24);//高八位向右移动三位
raf.write(i>>>16);
raf.write(i>>>8);
raf.write(i>>>0);

//中文两个字节,字母两个字节,int八个字节

读文件时,必须把指针移动到头部
raf.seek(0);//移动指针到index的位置

raf.length();返回的是lang

//一次性读取,把文件中的内容都读取到字节数组中
byte[] buf = new byte[(int)raf。length()]
raf.read(buf);
//变成字符串,装入数组中进行输出
Arrays.toString(buf);
for(byte b : buf){
//以16进制进行输出
Integer.toHexString(b&0xff)+”“;
}

raf.close();

public class TestDemo{
    public static void main(String[] args)  throws IOException{
        File demo=new File("demo");
        File file=new File(demo,"raf.txt");         
        RandomAccessFile raf=new RandomAccessFile(file,"rw");
        raf.write('A');//只写了一个字节,char类型
        System.out.println(""+raf.getFilePointer());
        int i=0x7fffffff;
        //用write方法,每次只能写一个字节,把i写进去就要写4次
        raf.write(i>>>24);//高8位
        raf.write(i>>>16);
        raf.write(i>>>8);
        raf.write(i);
        System.out.println(""+raf.getFilePointer());
        //可以直接写一个int
        raf.writeInt(i);
        System.out.println(""+raf.getFilePointer());
        String s="中";
        byte[] b=s.getBytes("gbk");
        raf.write(b);
        System.out.println(""+raf.length());
        //读文件,必须把指针指到头部
        raf.seek(0);
        //一次性读取,把文件内容都读取到字节数组中
        byte[] buf=new byte[(int)raf.length()];
        raf.read(buf);
        System.out.println(""+Arrays.toString(buf));
        for (byte c : buf) {
            System.out.println(Integer.toHexString(c&0xff)+"");
        }
        raf.close();//关闭
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值