如何在内存中生成的文件中用Java创建zip存档?

时间:2012-03-05 18:48:43

标签: java zip

  

可能重复:
  In Java: How to zip file from byte[] array?

这是交易,我在大学网络办公室工作,我们为大学部门和俱乐部提供一些网站模板。我的任务是构建一个Web表单,允许他们选择他们想要的模板并提供一个标题,该标题将以编程方式插入到他们在下载之前选择的模板中。

我的问题是,我可以将模板拉入内存,插入标题并将其输出到zip存档而无需将临时文件写入磁盘吗?

Java的ZipEntry似乎需要一个文件名,不能简单地使用内存中的数据。

2 个答案:

答案 0 :(得分:4)

不,名称“文件名”在这里可能有点令人困惑,但它表示您正在创建的ZIP存档中的条目的文件名。看一下ZipOutputStream。它创建为每个其他输出流的包装器,FileOutputStreamByteArrayOutputStream。使用ByteArrayOutputStream,您可以在内存中完全创建zip存档。

答案 1 :(得分:1)

这是因为与GZIP不同,ZIP可以压缩多个文件。

因此,虽然您必须提供文件名(将记录在zip文件中),但这并不意味着文件必须存在于文件系统中。它只是存档中文件的名称。