从 ByteStream 创建 ZIP/TGZ 存档

Posted

技术标签:

【中文标题】从 ByteStream 创建 ZIP/TGZ 存档【英文标题】:Create ZIP/TGZ archive from ByteStream 【发布时间】:2014-04-03 14:09:31 【问题描述】:

我的问题的前提是我创建了一个永远不应该写入磁盘的ini文件,但是这个“文件”需要以某种方式压缩,另外这个文件需要写在一个文件夹中,而不是平放在压缩文件,例如文件夹/file.ini。

我最初的想法是只将这个文件创建到一个 ByteArrayOutputStream 中,这样可以满足文件不写入磁盘的要求。

但是在压缩文件时,我认为它需要存在于磁盘上,即使只是提供一个文件名。

有什么方法可以实现吗?

【问题讨论】:

【参考方案1】:

是的,您可以使用 ZipOutputStream 之类的 -

ZipOutputStream zs = null;
try 
  zs = new ZipOutputStream(os); // Where os is your ByteArrayOutputStream 
  ZipEntry e = new ZipEntry(fileName); // fileName is your file (in the zip)
  zs.putNextEntry(e);
  zs.write(theContent); // theContent is the the file content.
 finally 
  if (zs != null) 
    zs.close();
  

【讨论】:

感谢您的快速回复!可以想象,我也可以使用这种方法在我的压缩输出中创建任何目录? @MikeWells 下次在您的帖子中包含您的整个问题。是的,您可以将文件存储在文件夹中 - 例如,zs.putNextEntry(new ZipEntry("aFolder/myFile.txt"));

以上是关于从 ByteStream 创建 ZIP/TGZ 存档的主要内容,如果未能解决你的问题,请参考以下文章

linux 打包 解压 tar zip tgz

tensorflow入门MNIST遇到的问题

IO流-字节流

[存]Git Flow流程示例代码

如何从图像集合中保存视频文件?

如何从暂存区域中删除目录子树?