美文网首页
(012) 分段读流,避免内存泄漏

(012) 分段读流,避免内存泄漏

作者: Lindm | 来源:发表于2018-11-27 15:57 被阅读0次
    一、前言

    处理二进制文件流,需将流转为字节数组,使用Arrays.copyOf()方法转换的弊端在于,需指定字节数字大小,容易造成内存泄漏。

    二、直接拷贝
    BufferedInputStream bis = new BufferedInputStream(inputStream);
    byte[] fileByte = new byte[size];
    int readLen = bis.read(fileByte);
    data = Arrays.copyOf(fileByte, readLen);
    bis.close();
    
    三、使用缓存
    // 利用缓冲区,分段读取,防止内存泄露
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len;
    while ((len = inputStream.read(buffer)) > -1) {
        baos.write(buffer, 0, len);
    }
    baos.flush();
    inputStream.close();
    byte[] data = baos.toByteArray();
    

    相关文章

      网友评论

          本文标题:(012) 分段读流,避免内存泄漏

          本文链接:https://www.haomeiwen.com/subject/pfngqqtx.html