将大型CSV流写入内存中的ZipOutputStream会占用与CSV或潜在zip的大小相同的内存吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将大型CSV流写入内存中的ZipOutputStream会占用与CSV或潜在zip的大小相同的内存吗?相关的知识,希望对你有一定的参考价值。
我有一个包含大型CSV的Zip。 (因此它是压缩的)我想在CSV中添加一列并再次压缩。
我可以将整个Zip放在内存中,但绝对不是整个CSV。因此,如果我按块将CSV块写入ZipOutputStream的特定ZipEntry(内存中)。它会占用堆中的整个空间,因为CSV数据需要或者需要Zip文件所需的数量吗?
答案
这就是我们通常从zip复制到zip的方式:
byte[] buffer = new byte[8192];
while ((currentEntry = zipInputStream.getNextEntry()) != null) {
ZipEntry newEntry = new ZipEntry(currentEntry.getName());
zipOutputStream.putNextEntry(newEntry);
int length;
while ((length = zipInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, length);
}
zipOutputStream.closeEntry();
}
从这段代码中我们可以假设程序将以8k的形式读/写块
以上是关于将大型CSV流写入内存中的ZipOutputStream会占用与CSV或潜在zip的大小相同的内存吗?的主要内容,如果未能解决你的问题,请参考以下文章
在python中迭代大型csv文件中的行的最佳方法,写入新的