问题标签 [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 回答
8843 浏览

.net - 如何判断“ZipArchiveEntry”是否是目录?

我正在使用 .Net 4.5.2 System.IO.Compression.ZipArchive 类处理一些第 3 方 ZIP 文件,并且一切正常。
但是,我需要将文件条目目录条目区分开来,最好不要先提取它们。

有没有办法判断一个 ZipArchive 条目是否是一个目录而不提取它?

据发现,ZipArchiveEntry 没有属性可以告诉它是文件还是目录。

0 投票
1 回答
1078 浏览

c# - 如何将pdf存储在zip文件中,而不在本地保存

我在 zip 文件中有一个 zip 文件,在内部 zip 文件中有一个 Excel 和一个 PDF/Tif 文档。

我目前正在开发一种工具,可以读取所有这些文件并将它们存储在数据库中。在我先将这两个文件存储在一个文件夹中之前,但由于 zip 文件包含大量文件,我收到了磁盘空间不足的异常。

所以现在我想尝试在不知道文件夹位置的情况下直接将文件存储在数据库中。

但这不起作用,因为这File.ReadAllBytes()将需要一条路径。那么我能做什么呢?在本地存储文件会给我一个磁盘空间不足的异常,没有它我没有路径。

请注意,我只想将此System.IO.Compression库用于此目的。

0 投票
0 回答
222 浏览

c# - ClickOnce 应用程序缺少 System.IO.Compression

我有一个引用的ClickOnce应用程序System.IO.Compression,该引用由 NuGet 管理。

System.IO.Compression是(我的默认)标记为Copy Local = True,实际上它已复制到 bin 文件夹中。

但是 Publish\Application Files 列表不包括此 DLL(即使我选择显示所有文件)

有一个解决方案,就是将 DLL 作为仅内容文件添加到项目中。但这对我来说似乎有点丑陋,而且很奇怪。我正在使用 VS 2017 RC 15.0.26014.0。

是不是我做错了什么,或者我有什么误解?

0 投票
1 回答
212 浏览

zipfile - ZipArchive ZipFile 未压缩

我在 .net 4.5 中使用 System.IO.Compression,ZipArchive 和 ZipFile 用于将 txt 文件添加到存档中。大约有 75 个文件。将文件放入文件夹并测量大小时,大约为 15 KB

但是当用于使用 ZipArchive 放入存档时,生成的 zip 文件大小为 21KB。我做错了什么还是这个 ZipArhive 只是将文件放入存档单个文件而不是压缩?

是用于 .zip 创建的 Deflate 算法吗?这就是我所做的。是否可以使用任何高级压缩?对于 .7zip,文件大小更小,仅 1KB 左右

0 投票
1 回答
1282 浏览

c# - ZipArchive 创建无效的 ZIP 条目

我正在使用 ZipArchive,它大部分都在工作,我看到的一个问题是,当文件下载时,我无法使用 Windows 默认存档例程打开它。如果我单击 zip 文件并提取所有内容,我会收到一条错误消息,指出没有要提取的条目。有谁知道为什么会这样?对于它的价值,我可以用 7zip 打开同一个文件并解压缩文件。

更新:

找到了这个SO Answer并修改了我的来源,它正在工作....我仍然不知道为什么。

0 投票
1 回答
1884 浏览

c# - 使用特定编码读取 ZipArchive

请告诉我,如何实现 Encoding.GetEncoding ("cp866")?在从存档导出的过程中,俄语符号未正确显示。

如 System.IO.Compression: ZipFile.ExtractToDirectory(zipPath, extractPath, Encoding.GetEncoding("cp866"));

0 投票
1 回答
893 浏览

c# - C# 将图像写入 ziparchive

我正在编写一个 C# .NET(v4.6.1) WinForms 应用程序,它将文件保存为 System.IO.Compression.ZipArchive。首先,我使用 SaveFileDialog() 方法打开一个图像,然后将其分配给 System.Drawing.Image 类型的变量。然后我保存文件,从进入文本文件的字符串、整数和布尔值开始。接下来,我尝试从变量中保存图像,而不是从硬盘上的原始文件路径中保存图像。这是保存文件的代码,文本文件后跟图像:

问题:图像未保存。我在 7zip 中打开生成的 zip 文件并尝试在 Web 浏览器中打开图像,我得到的只是“System.Drawing.Image”。甚至可以通过这种方式将图像保存到 zip 存档中吗?如果没有,如果不从硬盘上的原始位置写入图像文件,我该怎么做?

0 投票
3 回答
4053 浏览

c# - 打开使用 System.IO.Compression 创建的 ZipArchive 时 C# .NET 缺少方法异常

我有一个 C# WinForms .NET 应用程序,我试图在其中写入一个 zip 存档并使用 System.IO.Compression 从中读取。

现在我创建了 ziparchive:

这是我打开它的方式:

它抛出了一个缺失方法异常,我在 Internet 上到处寻找修复方法。这是堆栈跟踪:

0 投票
0 回答
453 浏览

c# - 使用 System.IO.CompressionGZipStream 压缩/解压缩大文件

我正在尝试使用System.IO.Compression.GZipStream.

我可以压缩文件:

  • 打开GZipStream

  • 将文件的一部分压缩为MemoryStream

  • GZipStream

  • byte[]从文件中取出MemoryStream并将其写入文件

我可以用 WinRar 打开这个文件,也可以用 WinRar 解压缩它,但是当我尝试使用 解压缩它时GZipStream,我得到以下异常:

System.IO.InvalidDataException

当我在 WinRar 中打开此文件时,我看到文件的大小为 512Kb(这是文件的单个部分的大小,我将其分割),但在“打包”列中,它显示了文件的完整大小.

所以我的问题是当我压缩文件时我做错了什么?

UPD:顺便说一句,我尝试解压缩的方法是关闭的。但是,你现在,它解压缩,但文件无效

0 投票
0 回答
803 浏览

c# - 使用 c# .net4.5 ZipArchive System.IO.Compression 读取 3.9GB 的 zip 文件

当我尝试使用 ZipArchive 读取包含在大型 zip 文件(扩展至 3.9GB)中的文件时,我在 StreamReader 行上收到 InvalidDataException 异常“存档条目是使用不支持的压缩方法压缩的”。

相同的代码适用于 600M(提取)的 zip 文件。

有没有办法让它工作?