我有一个文件夹,其中包含我需要提取的一百万个 zip 文件。我尝试过的两种方法:
方式1:使用7-zip exe文件和System.Diagnostic Process如下
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 文件并为每个文件使用进程是多么昂贵。我真的很想使用方式 2,但由于某种原因它给出了例外。