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

一、前言

处理二进制文件流,需将流转为字节数组,使用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) 分段读流,避免内存泄漏)