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

标签 java zip

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

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

在图像中:/image/yPuYG.png

最佳答案

您可以使用内存基础流(例如ByteArrayOutputStream)来读取/写入文件的内容。

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

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

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

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

关于java - 使用内存将文件添加到 zip java,同时避免保留文件名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398076/

相关文章:

java - 检查 FTP 服务器上的可用空间

java - 如何在继续之前等待 JFrame 关闭?

java - 无法打开生成的 zip 文件

python - 如何在 python zipinfo 中设置注释

linux - 在包含文本文件压缩包的文件夹中搜索 "String"

java - 如何在 ant zip 任务中使用 exceptsfile/includesfile

java - 改造 - 尝试获取 response.body 时出现 JsonSyntaxException

java - 为什么我用 Java 实现的快速排序不起作用?

java - 为什么方法不是静态的却说它是静态的?

Java:通过 HTTP 流式传输 Zipfile 的内容