gpt4 book ai didi

c# - 多次复制相同文件的文件夹的高效压缩

转载 作者:行者123 更新时间:2023-11-30 19:41:52 26 4
gpt4 key购买 nike

我正在使用 Ionic.Zip 创建一个 *.zip。但是,我的 *.zip 多次包含相同的文件,有时甚至是 20 次,而 ZIP 格式根本没有利用它。

更糟糕的是,Ionic.Zip 有时会因 OutOfMemoryException 而崩溃,因为我正在将文件压缩到 MemoryStream 中。

是否有一个 .NET 库可以利用文件之间的冗余进行压缩?

用户自行解压,不能是外来格式。

最佳答案

我最终使用 SharpZipLib 库创建了一个 tar.gz。在 1 个文件上使用此解决方案,存档为 3kB。在 20 个相同的文件上使用它,存档只有 6kB,而在 .zip 中它是 64kB。

核心:

Install-Package SharpZipLib

使用:

using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Tar;

代码:

var output = new MemoryStream();
using (var gzip = new GZipOutputStream(output))
using (var tar = TarArchive.CreateOutputTarArchive(gzip))
{
for (int i = 0; i < files.Count; i++)
{
var tarEntry = TarEntry.CreateEntryFromFile(file);
tar.WriteEntry(tarEntry,false);
}

tar.IsStreamOwner = false;
gzip.IsStreamOwner = false;
}

关于c# - 多次复制相同文件的文件夹的高效压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491495/

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