我正在尝试压缩文件(例如 foo.csv)并将其上传到服务器。我有一个工作版本,它创建一个本地副本,然后删除本地副本。我将如何压缩一个文件,这样我就可以在不写入硬盘驱动器的情况下发送它,并且完全在内存中完成?
原文由 Sleep Deprived Bulbasaur 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试压缩文件(例如 foo.csv)并将其上传到服务器。我有一个工作版本,它创建一个本地副本,然后删除本地副本。我将如何压缩一个文件,这样我就可以在不写入硬盘驱动器的情况下发送它,并且完全在内存中完成?
原文由 Sleep Deprived Bulbasaur 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于 Java SE 7 中引入的 NIO.2 API 支持自定义文件系统,您可以尝试将内存文件系统(如 https://github.com/marschall/memoryfilesystem )与 Oracle 提供的 Zip 文件系统结合使用。
注意:我已经编写了一些实用程序类来处理 Zip 文件系统。
该库是开源的,它可能有助于您入门。
这是教程: http ://softsmithy.sourceforge.net/lib/0.4/docs/tutorial/nio-file/index.html
您可以从这里下载库:http: //sourceforge.net/projects/softsmithy/files/softsmithy/v0.4/
或者使用 Maven:
<dependency>
<groupId>org.softsmithy.lib</groupId>
<artifactId>softsmithy-lib-core</artifactId>
<version>0.4</version>
</dependency>
原文由 Puce 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
使用 ByteArrayOutputStream 和 ZipOutputStream 来完成任务。
您可以使用 ZipEntry 指定要包含在 zip 文件中的文件。
这是使用上述类的示例,
现在
baos
包含您的 zip 文件作为stream