c# -如何使用7-zip库创建一个常规的ZIP归档文件(例如:不是.7z,而是.zip)

本文关键字:ZIP 例如 归档文件 不是 zip 而是 7z 一个 7-zip 何使用 创建 | 更新日期: 2023-09-27 17:54:45

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

我的目标是在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算法。我已经通过了助手-以及7-zip库,似乎可以使用这个库来压缩文件与正常的"ZIP"算法。我似乎不知道该怎么做。我注意到属性设置在几个地方,但我找不到任何文档或谷歌告诉我在哪里设置这个。

我意识到可能有更好的方法来做这件事,我只是错过了一些东西,但我不能永远坐着和这样一个看似简单的任务斗争。任何帮助都将非常感激。

c# -如何使用7-zip库创建一个常规的ZIP归档文件(例如:不是.7z,而是.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);
        }