[英]C#: Programmatically create a split zip file
我想從一個約1.5GB的文件夾中創建一個zip文件,並將該zip文件拆分為100MB的塊。 我已經找到了很多線程,但是對我來說還沒有解決任何問題。
首先,我嘗試了System.IO.Compression,但發現它不支持拆分zip文件(如果我輸入錯了,請糾正我!)。
接下來,我嘗試了Ionic.zip,它看起來超級簡單,但是我創建的每個文件集都以某種方式損壞(例如,以下將fonts目錄用作測試目錄的代碼創建了我無法創建的文件集然后使用winzip或winrar打開或解壓縮為存檔):
using (var zipFile = new Ionic.Zip.ZipFile(Encoding.UTF8))
{
zipFile.AddDirectory("c:\\windows\\fonts", directoryPathInArchive: string.Empty);
zipFile.MaxOutputSegmentSize = 100 * 1000000;
zipFile.Save("c:\\users\\me\\test.zip");
}
最后,我嘗試了7z.dll和SharpCompress。 使用命令行和7z.exe文件,以下各項可完美運行:
7z.exe a "c:\users\me\test.zip" "c:\Windows\Fonts" -v100m
但是以下代碼給出錯誤“值不在預期范圍內”。
SevenZipCompressor.SetLibraryPath("c:\\program files\\7-zip\\7z.dll");
var compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Lzma2;
compressor.CustomParameters.Add("v", "100m");
compressor.CompressDirectory("c:\\windows\\fonts\\", "c:\\users\\me\\test.zip");
我還嘗試了以下操作(嘗試弄清了SharpCompress中的命令行開關是如何工作的),它確實創建了一個zip文件,但沒有將其拆分:
SevenZipCompressor.SetLibraryPath("c:\\program files\\7-zip\\7z.dll");
var compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Lzma2;
compressor.CustomParameters.Add("mt", "on");
compressor.CustomParameters.Add("0", "LZMA2:c=100m");
compressor.CompressDirectory("c:\\windows\\fonts\\", "c:\\users\\me\\test.zip");
有誰知道為什么以上任何一種方法都行不通? 還是還有其他人們尚未嘗試過的工作方式?
謝謝!
我不知道支持PKZIP拆分zip文件格式的庫。
這是一個老問題,但是Ionic正在工作。 也許有些棘手,但是還可以。 我的第一個版本還創建了一組無法解壓縮的文件。 但是在更改命令順序之后,可以解壓縮輸出。
private static void CreateEncryptedZipFile(string filename, string to, FileInfo fi, string password)
{
using (var zipFile = new Ionic.Zip.ZipFile())
{
zipFile.Password = password;
zipFile.Encryption = Ionic.Zip.EncryptionAlgorithm.WinZipAes256;
zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zipFile.AddFile(filename, directoryPathInArchive: string.Empty);
zipFile.MaxOutputSegmentSize = 1024*1024*128;
zipFile.Save(to + ".zip");
}
createXMLInfo(fi, to);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.