问题标签 [system.io.compression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
38273 浏览

.net - System.IO.Compression 和 ZipFile - 提取和覆盖

我正在使用标准 VB.NET 库来提取和压缩文件。它也可以,但是当我必须提取并且文件已经存在时,问题就来了。

我使用的代码

进口:

崩溃时我调用的方法

archivedir 和 BaseDir 也已设置,实际上如果没有要覆盖的文件,它就可以工作。问题恰好在有的时候出现。

如何在不使用第三方库的情况下覆盖提取文件?

(注意我使用 System.IO.Compression 和 System.IO.Compression.Filesystem 作为参考)

由于文件放在多个文件夹中已经存在文件我会避免手动

0 投票
1 回答
926 浏览

.net - System.IO.Compression Zip 不使用 UTC

我刚刚开始在 .NET 4.5 中使用 System.IO.Compression,发现了一个问题。它使用本地修改时间而不是通用 UTC 时间存储文件。

因此,如果您在一个时区压缩文件并在另一个时区解压缩它们,它会使用原始文件中的本地修改时间(比如下午 1 点),并以相同的修改时间(也是下午 1 点)提取文件,即使它应该早或晚几个小时。

我假设在标准时间或夏令时压缩的文件也会存在同样的问题,然后在另一个时间解压缩。

似乎在压缩过程中缺少设置,因为其他解压缩方法(WinZip,压缩文件夹提取)会产生相同的错误修改时间。

我已经测试过使用WinZip在不同时区压缩和解压缩文件,它没有这个问题。它必须在内部使用 UTC 作为修改时间。

除了在 Zip 和 Unzip 期间建立我自己的时移例程之外,还有什么办法可以解决这个问题?

此项目不能使用任何外部应用程序或库。我们仅限于使用 .NET 函数。

0 投票
0 回答
15 浏览

c# - Base64encoded GZipStream 与窗口不匹配

我有以下 csv 文件:https ://dl.dropboxusercontent.com/u/8518063/ShareX/2016/03/simple.csv

我使用 Windows 资源管理器“发送到压缩的 zip 文件夹”并获取此文件:https ://dl.dropboxusercontent.com/u/8518063/ShareX/2016/03/simple.zip

我使用http://www.motobit.com/util/base64-decoder-encoder.asp并上传 zip 文件夹并获取此 base64 编码字符串:UEsDBBQAAAAIAMB5fEhJO+GGVQAAAIoAAAAKAAAAc2ltcGxlLmNzdk3KOwqAMBRE0V5wJzHk/ZPl CIoIQZu4f/Ms1FsMU5x6HtvermUNdW7PGYcJAGIBoISoVrxAFMkQWRVy6pn9nHFhcCavMyBxp/o5 xiw5uePXlb7uRG9QSwECFAAUAAAACADAeXxISTvhhlUAAACKAAAACgAAAAAAAAABACAAAAAAAAAA c2ltcGxlLmNzdlBLBQYAAAAAAQABADgAAAB9AAAAAAA=

我无法使用 c# 重现 base64string。我的尝试:

可在此处在线运行:http: //csharppad.com/gist/e5d92798cb4a9c7887d6

返回H4sIAAAAAAAEAEXKOwqAMBBF0d61xJD5Z5YjKCIEbeL+dSziLR6vOO0696Pf65ba0r8zzQCQHYAKoppHiSiTIbIq1PJm9jNjZwglgxmQBFMdjLFKLcF4MH83mOgD8gxr24cAAAA=

0 投票
0 回答
532 浏览

c# - 使用 System.IO.Compression 的 Excel zip 打包

我正在创建一个基于 Office Open XML 的 excel 文件 (xlsx)。这就是我的代码的样子。

我正在创建所有目录并编写所有必要的元数据。问题是,如果我使用 System.IO.Compression 中的 ZipFile 来压缩创建的目录 (excelDirectory),则该文件将被损坏,但如果我使用 Arhive Manager 或 7Zip 压缩该目录,则该文件会很好。可能是什么问题?

我正在使用 Linux Mint。单开发。单核细胞增多症。

0 投票
1 回答
110 浏览

asp.net-mvc - System.IO.Compression 未创建 Zip 文件

System.IO.Compression 程序集可以创建某些特定文件(如 .txt、.bak)的 zip 文件,还是只是创建目录的 zip 文件?我无法创建特定文件的 zip 文件,而是仅创建目录的 zip 文件

0 投票
3 回答
11539 浏览

c# - 将目录添加到现有 .zip 文件

首先,我想说我已经尝试寻找解决方案,但我还没有找到一个我不必解压缩、添加我的文件夹然后再次压缩的解决方案。我没有使用任何第三方库。如果可能的话,我想使用 system.io.compression 来做到这一点......如果没有,我会使用 dotnetzip 作为我最后的手段。

TL;博士。我希望能够将包含文件的目录添加到已创建的 zip 文件中。这可以使用System.Io.Compression图书馆吗?

编辑

因此,使用此代码,我可以在其中创建一个文件夹,但其中没有任何文件。我现在的问题是我是否必须再次运行此代码才能将我的源文件夹中的每个文件都放到 zip 中的这个文件夹中,还是有更好的方法?

0 投票
1 回答
56 浏览

c# - 我的 MVC 项目 (system.ıo.compression.CompressioLevel) 出现错误

MVC 项目添加 Roxy Manager 插件(CKEditor Plugin)

我在 C# 端出现错误。

在此处输入图像描述 我该如何解决这个问题。

0 投票
1 回答
7643 浏览

c# - System.IO.Compression 找不到中央目录记录的结尾

OpenRead在执行以下代码时..我在语句中遇到异常:

找不到中央目录记录的结尾。

但是,我可以通过 Windows 资源管理器毫无问题地打开 zip 文件。

有什么想法吗?

0 投票
1 回答
8827 浏览

c# - System.IO.Compression 和异步 I/O 中的 ZipFile 和 ZipArchive 类

.NET 4.5 添加了新的类来处理 zip 档案。现在您可以执行以下操作:

显然,如果您使用大型档案,可能需要几秒钟甚至几分钟才能从档案中读取文件。因此,如果您正在编写一些 GUI 应用程序(WinForms 或 WPF),您可能会在单独的线程中运行此类代码,否则您将阻塞 UI 线程并使您的应用程序用户非常沮丧。

但是这段代码中的所有 I/O 操作都将在 2016 年被认为“不酷”的阻塞模式下执行。所以有两个问题:

  1. System.IO.Compression是否可以使用类(或者可能使用其他一些第三方 .NET 库)获得异步 I/O ?
  2. 这样做有意义吗?我的意思是压缩/提取算法无论如何都非常消耗 CPU,所以如果我们甚至从CPU 密集型阻塞 I/O 到异步 I/O,性能增益可能相对较小(当然是百分比,而不是绝对值)。

更新:

回复 Peter Duniho 的回答:是的,你是对的。出于某种原因,我没有考虑过这个选项:

这绝对有效。谢谢!

顺便一提

仍将是 CPU-bound 阻塞 I/O 操作,只是在单独的线程中在 I/O 操作期间使用线程池中的线程。

但是,正如我所看到的,.NET 的开发人员仍然使用阻塞 I/O 来进行某些存档操作(例如此代码来枚举存档中的条目,例如:dotnet@github 上的 ZipArchive.cs)。我还发现了一个关于缺少 ZipFile API 的异步 API的公开问题。

我想目前我们有部分异步支持,但还远未完成。

0 投票
4 回答
8491 浏览

c# - 使用 System.IO.Compression 创建后的 zip 文件无效

我正在尝试创建一个包含一个或多个文件的 zip 文件。
我正在使用 .NET 框架 4.5,更具体地说是 System.IO.Compression 命名空间。
目标是允许用户通过 ASP.NET MVC 应用程序下载 zip 文件。
正在生成 zip 文件并将其发送到客户端,但是当我尝试通过双击打开它时,我收到以下错误:
Windows 无法打开文件夹。压缩(压缩)文件夹...无效。
这是我的代码:

任何人都可以解释一下为什么当我双击它时,Windows 会说我的 zip 文件无效。
最后考虑一下,我可以使用 7-Zip 打开它。