从文件模式为读取的文件流创建存档 .zip

Posted

技术标签:

【中文标题】从文件模式为读取的文件流创建存档 .zip【英文标题】:Create an archive .zip from file stream where file mode is Read 【发布时间】:2017-11-02 04:39:45 【问题描述】:

有一个 zip 文件夹,其中包含一个 XML 文件。这是从服务中重试的

return File.Open("location", FileMode.Open, FileAccess.Read, FileShare.Read)

现在在 UI 中,当用户单击一个链接时,他应该会获得一个存档 .zip 文件夹,并且该文件应该在该用户下载的包含 XML 文件的文件夹中可用。

目前我正在尝试使用ZipArchiveEntry.ExtractToFile()。它会创建一个 zip 文件夹,但是当我尝试手动解压缩时,它会显示为空的压缩文件夹。

【问题讨论】:

不要更改问题。发布一个新的。 【参考方案1】:

尝试使用 System.IO.Compression 库并使用 ZipFile.ExtractToDirectory(zipPath, ExtractionPath) 这可能会有所帮助。

更多帮助https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-compress-and-extract-files

【讨论】:

这给了我从 ZipArchiveEntry 中提取的文件,但我希望将输出本身作为压缩文件夹 如果要压缩文件夹,请使用 ZipFile.CreateFromDirectory(startPath, zipPath)。如果要解压缩文件夹,请使用 ZipFile.ExtractToDirectory(zipPath, ExtractionPath) 如果您想做任何与压缩相关的操作,请通过我在答案中提到的链接。这可能会有所帮助 我的要求是我有一个流。如果我给它一个 ExtractToFile,它将作为 .xml 文件下载。但我希望 Stream 直接转换为 zip 文件 为迟到的回复道歉,但你可以做冗长的程序,但我想它会起作用的。 1. 将该字符串存储到文件中。 2. 创建它的 zip 3. 解压它。

以上是关于从文件模式为读取的文件流创建存档 .zip的主要内容,如果未能解决你的问题,请参考以下文章

JAVA输入/输出流程序例题(文件和目录字节流字符流)

Spark结构化流 - 使用模式从文件中读取时间戳

读取 zip 文件时的文件流异常(如何使用块)

熊猫。如何从 ZIP 存档中读取 Excel 文件

使用 Haskell 的 zip-conduit 从 zip 存档中的文件中读取行

使用通用流通过 SharpCompress 创建压缩文件