具有readAllBytes和read的内存



我有一个zip -archive的情况,我想知道什么是更好的解包方法。

我正确地理解,如果我们将使用InputStream.readAllBytes()and nextOutputStream.write(ourAllBytes)-那个不好的做法(如果存档有文件<例如,2gb),并且我需要使用固定的字节数进行读写(>InputStream.read(buffer)OutputStream。write(buffer, 0 len))以节省RAM?对我的情况来说,什么更好?

为了避免在内存中读取和存储所有输入字节,您可以使用InputStream.transerTo(OutputStream)方法:

try (var in = CreateYourInputStreamHere;
var out = CreateYourOutputStreamHere) {
in.transferTo(out);
}

在Java 17中,这种方法将使用8K的缓冲区,在处理下一个块之前读写单个8K的数据块。

最新更新