這是我在這裏的第一個問題,請耐心等待。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