[英]Memory with readAllBytes and read
我遇到了 ZIP 档案的情况,我想知道什么是更好的解包方法。
我正确地理解,如果我们将使用InputStream.readAllBytes()和下一个OutputStream.write(ourAllBytes) - 这是不好的做法(例如,如果 arhive 的文件 < 2gb),我需要使用固定的字节数来读写( InputStream.read(buffer)和OutputStream.write(buffer, 0 len) )用于节省 RAM? 什么对我的情况更好?
为避免读取和存储 memory 中的所有输入字节,您可以使用InputStream.transerTo(OutputStream)
方法:
try (var in = CreateYourInputStreamHere;
var out = CreateYourOutputStreamHere) {
in.transferTo(out);
}
在 Java 17 中,此方法将使用 8K 缓冲区,在处理下一个数据块之前读取和写入单个 8K 数据块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.