当前位置: 首页 > 知识库问答 >
问题:

如何在Java中从字节数组创建ZipFile

乐正光誉
2023-03-14

Java你必须做new ZipFile(new File("xxx.zip"));才能解压缩一个zip文件。

现在我得到一个字节数组,它的内容是一个zip文件。我从数据库而不是文件中获取这个字节数组。我想解压这个“字节数组文件”,但字节数组或字符串没有ZipFile构造函数(我指的是内容,而不是文件路径)。

有什么解决方案吗?(当然我不想将此字节数组写入实际文件并再次将其读入内存。)

谢谢

共有2个答案

南门志
2023-03-14

ZipFile的实现要求它是一个文件。例如,可以使用内存映射。一般来说,人们认为档案可能是巨大的。

正如@Perception所提到的,ZipInputStream可以用于按顺序读取流。可以使用第三方库替换ZipFile

巫马松
2023-03-14

在从字节数组创建的ZipInputStream中使用ByteArrayInputStream

byte[] ba;

InputStream is = new ByteArrayInputStream(ba);
InputStream zis = new ZipInputStream(is);

使用zis读取未压缩的内容

 类似资料:
  • 问题内容: 从DB2表中,我有一个Blob,我正在将其转换为字节数组,以便可以使用它。我需要采取字节数组并创建它。 这就是我所拥有的: 但是它创建的是不正确的,它上面有一束黑线。 实际上,通过使用基本上相同的过程编写Web应用程序,我能够创建正确的代码。Web应用程序和有关代码的主要区别在于以下这一行: 所以我知道字节数组是一个并且可以完成,但是我的代码不会创建clean 。 关于如何使它起作用的

  • 问题内容: 所以-我有一个需要a 作为输入的第三方库。我有一个。 我不想将字节写入磁盘..我想将其保留在内存中。我如何从提供的内容创建一个想法(无需写入磁盘)? 问题答案: 抱歉,不可能。除非您具有RAM磁盘,否则File本质上是磁盘上的实体-但这不是您可以用Java创建的东西。 这正是API不应该基于File对象(或过载以接受InputStream)的原因。

  • 我已经看到了这个问题:从数组创建ArrayList 然而,当我用下面的代码尝试该解决方案时,它并不是在所有情况下都有效: 我做错了什么?代码不应该

  • 问题内容: 我有一个像这样的文本文件: ids.txt 我想读取此文件并将其加载到二维数组中。我希望有一个类似于下面的数组: 这是我写的代码: 运行此代码时,将引发异常: 如何解决此异常? 问题答案: 给定,您可以将每个项目解析为,并将其包装为使用: 现在要将结果转换为a,您只需执行以下操作: 对于输入: 输出:

  • 问题内容: 通过这种方式获得字节数组- 现在我如何从字节数组重建此灰度图像? 我对ARGB,RGB或灰度图像了解不多。我试过了- 当我绘制此图像时,它不是黑白的,而是橙色和灰色的东西。 问题答案: 如果我向您解释如何从ARGB / RGB 2灰度转换,希望对您有所帮助,因为它有太多未知的函数和类:P ARGB为32位/像素,因此每个通道为8位。Alpha通道是不透明度,因此与透明度相反,因此0是透

  • 问题内容: 由于Java泛型的实现,因此不能有以下代码: 如何在保持类型安全的同时实现此目的? 我在Java论坛上看到了这样的解决方案: 但是我真的不知道发生了什么。 问题答案: 我不得不问一个问题:您的GenSet“已选中”还是“未选中”?那是什么意思? 检查:强打字。GenSet明确地知道什么类型的包含对象(即它的构造是明确要求有Class 参数,当他们通过了类型不是参数的方法会抛出异常E。见