我有一个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的数据块。