从zip文件夹解压缩单个文件,而无需写入磁盘

指纹

是否可以从zip文件夹中解压缩单个文件并返回解压缩的文件而不将数据存储在服务器上?

我有一个结构未知的zip文件,我想开发一种服务,该服务将按需提供给定文件的内容,而无需解压缩整个zip文件,也无需在磁盘上进行写操作。所以,如果我有这样的压缩文件

zip_folder.zip
  |  folder1
       |  file1.txt
       |  file2.png
  |  folder 2
       |  file3.jpg
       |  file4.pdf
  |  ...

因此,我希望我的服务接收文件的名称和路径,以便可以发送文件。

例如,fileName可能是folder1/file1.txt

 def getFileContent(fileName: String): IBinaryContent = {
    val content: IBinaryContent = getBinaryContent(...)

    val zipInputStream: ZipInputStream = new ZipInputStream(content.getInputStream)
    val outputStream: FileOutputStream = new FileOutputStream(fileName)

    var zipEntry: ZipEntry = null
    var founded: Boolean = false
    while ({
      zipEntry = zipInputStream.getNextEntry
      Option(zipEntry).isDefined && !founded
    }) {

      if (zipEntry.getName.equals(fileName)) {

        val buffer: Array[Byte] = Array.ofDim(9000) // FIXME how to get the dimension of the array
        var length = 0

        while ({
          length = zipInputStream.read(buffer)
          length != -1
        }) {
          outputStream.write(buffer, 0, length)
        }
        outputStream.close()
        founded = true
      }
    }

    zipInputStream.close()
    outputStream /* how can I return the value? */

  }

不写磁盘内容怎么办?

cbley

您可以使用ByteArrayOutputStream而不是FileOutputStream将zip条目解压缩到内存中。然后调用toByteArray()它。


还要注意,从技术上讲,如果您可以通过支持deflate编码的协议(通常是Zip中使用的标准压缩)的协议(例如HTTP(S))传输zip,则无需解压缩zip部分。文件)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Powershell中替换* .zip文件中的文件而无需解压缩(解压缩)

将档案解压缩到单个文件夹

如何解压缩多个 zip 文件夹

修改.zip文件中包含的MS Word文件的内容,而无需解压缩它?

在JS中重建解压缩的zip文件的文件/文件夹结构

从ZIP存档导出文件列表而无需解压缩

读取zip存档中的文件,而无需解压缩存档

读取zip或jar文件,而无需先将其解压缩

在不写入磁盘的情况下下载和解压缩.zip文件

创建文件夹并将文件保存到该文件夹,然后解压缩zip文件

7zip解压缩* .zip在子文件夹中

将 .zip 文件解压缩到文件夹 C#

将zip文件解压缩到本地文件夹

解压缩到与文件同名的文件夹(不带.zip扩展名)

使用 Powershell 在单独的文件夹中解压缩 ZIP 文件

即使该zip文件没有文件夹,也可以递归解压缩

如何在Python中的Windows文件夹中解压缩zip文件

使用Tkinter创建用于创建文件夹并解压缩ZIP文件的GUI

如何从zip文件复制到文件夹而不解压缩?

如何将zip文件解压缩到文件夹中,但要避免重复文件夹?

使用python解压缩文件夹和子文件夹中的zip文件

android从zip文件解压缩文件夹并从该文件夹读取内容

将解压缩的文件保存到文件夹

无法将文件解压缩到文件夹

解压缩.zip文件

在Java中无需解压缩即可替换Zip文件

使用原始名称解压缩多个 zip 文件夹

如何解压缩我的子目录中的所有 zip 文件夹?

zipfile将zip解压缩到一个文件夹