这是我在这里的第一个问题,请耐心等待。C# - 如何使用7-zip库(即不是.7z,但.zip)创建常规ZIP存档?
我打算做的只是在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”算法压缩文件。我似乎无法弄清楚如何做到这一点。我注意到几个地方的属性设置,但我找不到任何文档或使用Google搜索来告诉我在哪里设置。
我意识到可能有更好的方法来做到这一点,我只是错过了一些东西,但我无法坐下来和这样一个永远很容易的任务斗争。任何帮助将不胜感激。
那么大,使用命令行中的7-Zip,就像这样:'7za a -tzip D:\ myFile.zip D:\ MyPath \ *。*' – alex 2011-05-05 10:32:05
这里只是猜测,但您选择的压缩类型可能是问题... 。即第七行包含“SevenZip.Compression.LZMA”是否没有替代压缩LZMA? – Xander 2011-05-05 10:52:54