RandomAccessFile小结

这两天在项目中频繁用到RandomAccessFile,mark一下。

RandomAccessFile是javaIO中内容访问类。既可以读取文件内容,也可以写入文件内容,并且与其他输入输出流不同的是,RandomAccessFile可以在任何位置读取或者写入文件。重点用到的是seek方法,可以读取到任意位置。

在创建RandomAccessFile对象的时候,除了他自己本身以后,还需要指定一个mode参数,

RandomAccessFile randomAccessFile = new RandomAccessFile(file,mode);这个mode可以指定为:

“r”:以只读方式打开。调用其他任何write方法都会抛出异常。

“rw”:以读写方式打开文件。如果该文件不存在,则创建改文件。

还有"rws"和"rwd"。这两种也是以读写的方式打开文件,不过这个mode会要求文件的内容或者元数据的更改都要写入到底层存储设备中。

大多数时候用到的都是下载中的使用:

RandomAccessFile randomFile  = new RandomAccessFile(videoTmpFile, "rw");
if (!videoTmpFile.exists()){
    randomFile.setLength(longVideSize);
}
randomFile.seek(startPos);                
InputStream inputStream = null;
byte[] buffer = new byte[1024*1024];
try {
     // 注意,part.getInputStream()切记不要多次调用
     inputStream = new ByteArrayInputStream(content.getBytes());
     while ((len = inputStream.read(buffer)) > 0) {
     randomFile.write(buffer, startPos, len);
      }
    }catch (Exception e){
          e.printStackTrace();
    }finally {
          randomFile.close();
          if (inputStream!=null){
             inputStream.close();
          }
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值