gpt4 book ai didi

C# - 如何使用 7-zip 库(即不是 .7z,而是 .zip)创建常规 ZIP 存档?

转载 作者:太空狗 更新时间:2023-10-30 01:26:00 26 4
gpt4 key购买 nike

这是我在这里的第一个问题,请耐心等待。

我的目标是在 C# 中创建一个基本的 .zip 存档。我已经尝试使用 .NET 的内置 GZipStream 类并设法实现了这一点,但是我遇到了一个问题,我无法在存档文件丢失的情况下将文件命名为“usercode.zip”延期。由于限制,我无法让我的程序将这些文件创建为“usercode.trf.zip”,这是我发现的将文件扩展名完整保留在存档中的唯一方法。

我尝试过使用许多其他压缩库,但我似乎无法让它们正常工作或按我希望的方式工作。

我发现了 SevenZipHelper 库,它提供了一些使用 LZMA(或 7-zip)库压缩文件的漂亮函数。

我使用的代码如下所示:

//Take the BF file and zip it, using 7ZipHelper
BinaryReader bReader = new BinaryReader(File.Open(pFileName, FileMode.Open));
byte[] InBuf = new byte[Count];

bReader.Read(InBuf, 0, InBuf.Length);
Console.WriteLine("ZIP: read for buffer length:" + InBuf.Length.ToString());

byte[] OutBuf = SevenZip.Compression.LZMA.SevenZipHelper.Compress(InBuf);

FileStream BZipFile = new FileStream(pZipFileName, FileMode.OpenOrCreate, FileAccess.Write);
BZipFile.Seek(0, SeekOrigin.Begin);
BZipFile.Write(OutBuf, 0, OutBuf.Length);
BZipFile.Close();

这会使用 7-zip 算法巧妙地创建一个压缩文件。问题是我不能保证使用这个程序的客户可以访问 7-zip,所以文件必须是普通的 zip 算法。我已经浏览了 helper- 以及 7-zip 库,似乎可以使用该库通过正常的“ZIP”算法压缩文件。我似乎无法弄清楚如何做到这一点。我注意到几个地方的属性设置,但我找不到任何文档或谷歌搜索来告诉我在哪里设置它。

我意识到可能有更好的方法来做到这一点,我只是错过了一些东西,但我不能永远坐下来为这样一个本应很容易的任务而苦苦挣扎。任何帮助将不胜感激。

最佳答案

如果你愿意,你可以看看这个库,我以前用过它并且使用起来非常简单:dotnetzip

编辑(示例):

 using (ZipFile zip = new ZipFile())
{
foreach (String filename in FilesList)
{
Console.WriteLine("Adding {0}...", filename);
ZipEntry e = zip.AddFile(filename,"");
e.Comment = "file " +filename+" added "+DateTime.Now;
}
Console.WriteLine("Done adding files to zip:" + zipName);
zip.Comment = String.Format("This zip archive was created by '{0}' on '{1}'",
System.Net.Dns.GetHostName(), DateTime.Now);

zip.Save(zipName);
Console.WriteLine("Zip made:" + zipName);
}

关于C# - 如何使用 7-zip 库(即不是 .7z,而是 .zip)创建常规 ZIP 存档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895937/

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