gpt4 book ai didi

c# - 在 C# 中创建未压缩的 Zip

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:45 26 4
gpt4 key购买 nike

根据 System.IO.Compression 中的 ZipArchive 库,我有一个问题。我想创建一个未压缩的 .zip 文件。到目前为止,我的代码如下所示:

//Creates a "Deflate"-Mode file in the created zip.
using (FileStream fs = new FileStream(zippath, FileMode.OpenOrCreate))
using (ZipArchive zip = new ZipArchive(fs, ZipArchiveMode.Update))
{
var demoFile = zip.CreateEntry("foo0.txt", CompressionLevel.NoCompression); //NoCompression does not seem to have an impact
using (var streamWriter = new StreamWriter(demoFile.Open()))
{
streamWriter.Write("Bar!");
}
}

那就是为我创建了一个 zip 文件,其中的文件是以“DEFLATE”模式而不是在商店中编写的。我怎样才能解决这个问题。我的想法是,我的问题可以通过使用 CompressionLevel.NoCompression 来解决。

将文件写入文件系统并压缩目录也不是一种选择,因为我想创建一个可能包含数十万个小文件的压缩文件。此外,仅使用 GZipStream 不是一种选择,因为我想在 .zip 文件中创建一个目录结构。

我用 7-zip 检查了模式:

(screenshot from 7-zip)

最佳答案

如果出于某种原因您需要将内容添加到压缩方法明确设置为STORE(无压缩)的 ZIP 文件中,您将需要使用一些第三方库。

System.IO.Compression 中的 .NET 类默认使用 DEFLATE。没有明显的方法可以改变这一点并使用另一种压缩方法或算法。
提供 CompressionLevel.NoCompression 只是告诉 DEFLATE 算法以最低压缩率1 工作。就文件大小而言,这可能会给您大致相同的最终结果。

支持 STORE 方法的第三方库包括:


1 应该是……没有压缩。参见 DEFLATE 的 non-compressed blocks

关于c# - 在 C# 中创建未压缩的 Zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48622135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com