2015-01-31 19 views
2

我將從iso文件中用sevenzipsharp提取文件到usb。爲此,我從vs nuget包管理器下載sevenzipsharp,並編碼(實際上我不能:))這段代碼。我沒有采取任何錯誤,但它沒有工作。我在哪裏犯錯誤?請寫詳細信息。如何基本上用sevenzipsharp提取文件

if (IntPtr.Size == 8) //x64 
{ 
    SevenZip.SevenZipExtractor.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll"); 
} 
else //x86 
{ 
    SevenZip.SevenZipCompressor.SetLibraryPath(@"C:\Program Files (x86)\7-Zip\7z.dll"); 
} 
using (var file = new SevenZipExtractor(sourcePath)) 
{ 
    file.ExtractArchive(outputPath); 
} 

預先感謝您

+2

你可以編輯你的答案,更具體嗎?你得到什麼錯誤信息? – Dave 2015-01-31 20:54:47

+0

我編輯的問題,並感謝您的興趣 – 2015-01-31 20:59:47

+0

即使在編輯之後,目前還不清楚你的問題是什麼。 ''我不會犯任何錯誤,我在哪裏犯錯誤?請寫詳細信息。「從任何角度來說都是毫無意義的。 – 2015-01-31 21:21:05

回答

3

對於x86你正在做SevenZip.SevenZipCompressor.SetLibraryPath,你大概的意思做SevenZip.SevenZipExtractor.SetLibraryPath

0
class Program 
{ 
    const string zipFile = @"D:\downloads\price.zip"; 

    static void Main(string[] args) 
    { 
     using (Stream stream = File.OpenRead(zipFile)) 
     { 
      string dllPath = Environment.Is64BitProcess ? 
       Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "7z64.dll") 
        : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "7z.dll"); 

      SevenZipBase.SetLibraryPath(dllPath); 

      Extract(stream); 
     } 
    } 

    static void Extract(Stream archiveStream) 
    { 
     using (SevenZipExtractor extr = new SevenZipExtractor(archiveStream)) 
     { 
      foreach (ArchiveFileInfo archiveFileInfo in extr.ArchiveFileData) 
      { 
       if (!archiveFileInfo.IsDirectory) 
       { 
        using (var mem = new MemoryStream()) 
        { 
         extr.ExtractFile(archiveFileInfo.Index, mem); 

         string shortFileName = Path.GetFileName(archiveFileInfo.FileName); 
         byte[] content = mem.ToArray(); 
         //... 
        } 
       } 
      } 
     } 
    } 
} 
相關問題