使用内存将文件添加到zip java中,同时避免保留文件名问题



我想用最有效的方式在zip中添加、删除或修改文件。

是的,你可能会说我应该做的是将.zip文件解压缩到文件系统中,但如果有一个文件的名称像"aux"或"con'",它在Windows中不起作用,因为它们是DOS设备名称,而且可能存在文件名编码问题,导致进程无法正常工作。我不只是解压缩到文件系统并重新压缩的另一个原因是,它比只使用RAM慢得多,占用的磁盘空间也更多。

在图像中:https://i.stack.imgur.com/yPuYG.png

您可以使用基于内存的流,如ByteArrayOutputStream来读取/写入文件的内容。

问题是可用内存的数量,因为RAM是有限的,你最终需要将输出存储在更大的东西上,比如磁盘。

为了尝试并乐观处理过程,您可以为读/写/处理操作设置一个首选阈值。

基本上,您将运行该进程,并根据首选阈值计算所需的时间,为下一个循环调整缓冲区大小。

我会允许多个循环并平均时间,这样你就不会试图对缓冲区进行精细控制,这可能会降低的速度

最新更新