Java IO流 序列三:RandomAccessFile类

 

3. RandomAccessFile

3.1 RandomAccessFile类简介

  •        1. Java提供的对文件内容的访问,既可以读文件,也可以写文件

  •        2. 可以随机访问文件,可以访问文件的任意位置

  •        3. 读写方式:rw(可读写) r(只读)

          例:RandomAccessFile raf = new RandomAccessFile(file,"rw")

  •        4. 由于是随机访问,该类提供了一个指针,默认打开文件的时候指正文件在开头 pointer = 0

  •        5. 写方法

            raf.write(int) -->只写一个字节(8),同时,指针指向下一个位置,准备再次写入

  •        6. 读方法

            int b = raf.read() -->读一个字节

  •        7. 文件读写完成一定要关闭

 

 

3.2 示例

public static void main(String[] args) throws Exception {

         // 创建目录

         File demo = new File("Demo");//未指定绝对路径,默认是本项目下

         if(!demo.exists()){

              demo.mkdir();

         }

         // 创建文件

         File file = new File(demo,"raf.dat");//demo目录下创建raf.dat文件

         if(!file.exists()){

              file.createNewFile();

         }

        

         RandomAccessFile raf = new RandomAccessFile(file, "rw");

         // 指针位置

         System.out.println("起始指针位置:" + raf.getFilePointer()); // 0

        

         // 写操作

         raf.write('A'); //只写了一个字节

         System.out.println("写入一次后的指针位置:" + raf.getFilePointer()); // 1

         raf.write('B');

         System.out.println("写入两次后的指针位置:" + raf.getFilePointer()); // 2

        

         // 最大整数

         int i = 0x7fffffff;

         // write方法每次只能写入一个字节,如果要把i写进去就得写4

         raf.writeInt(i >>> 24); //8

         raf.writeInt(i >>> 16); //8

         raf.writeInt(i >>> 8);

         raf.writeInt(i); //最后8

         System.out.println("指针位置:" + raf.getFilePointer());  // 18

        

         // 写入中文

         String s = "";

         byte[] bytes = s.getBytes("utf8");

         raf.write(bytes);

         System.out.println("指针位置:" + raf.getFilePointer());   // 21  

        

         // 文件长度

         System.out.println(raf.length());

        

         // 读文件. 必须把指针移到头部

         raf.seek(0);

        

         // 一次性读取,把文件中的内容全部读取到字节数组中

         byte[] buf = new byte[(int)raf.length()];

         raf.read(buf);

         System.out.println(Arrays.toString(buf));

        

         raf.close();

     }

 

转载于:https://my.oschina.net/AlbertHa/blog/342424

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值