我有一個文件夾,裏面包含我需要提取的一百萬個zip文件。兩種方法我都試過:C中的7-zip提取#
方法1:使用7-ZIP的exe文件和System.Diagnostic過程如下
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "7za.exe"
p.Arguments = "e " + sourceName; // sourceName is the name of the zip file
p.WindowStyle = ProcessWindowStyle.Hidden;
Process x = Process.Start(p);
x.WaitForExit();
方法2:使用7z.dll和SevenZipExtractor如下
SevenZipExtractor.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll");
SevenZipExtractor zipFile = new SevenZipExtractor("inv1_0.zip");
zipFile.ExtractArchive(@"c:\projects\extractor\extractor\bin\debug\inv1_0.dat");
這裏有兩件事:
a)方式1工作得很好。方式2不起作用。給出錯誤「SevenZip.SevenZipArchiveException:無效的存檔:打開/讀取錯誤!」。有人可以建議爲什麼這種情況會發生,當方式1提供正確的提取文件?
b)由於有一百萬個zip文件,所以我很擔心使用方法1:如在過程中一樣。循環使用一百萬個zip文件併爲每個zip文件使用過程的代價是多麼昂貴。我真的很想使用方式2,但出於某種原因,它給出了例外。
選項3:編寫一個批處理文件。 http://stackoverflow.com/questions/138497/batch-scripting-iterating-over-files-in-a-directory –
inv1_0.zip的完整路徑是什麼?你有沒有試過指定文件的完整路徑? – iamkrillin
@iamkrillin全部在同一個文件夾中。無效的文件不是這裏的錯誤。 –