繁体   English   中英

Memory 用 readAllBytes 读

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM