2014-10-30 101 views
2

我正在使用ZipFile類。嘗試使用ZipFile類時在System.IO.Compression中獲取錯誤

必須添加引用/ dll才能使用此類。看起來你可以同時使用System.IO.CompressionIonic.Zip dll(每次只有一個)。

在我的情況下,只有後者的作品。但問題是,Ionic.Zip似乎沒有覆蓋現有文件的方法:ExtracToFile(...)。我非常需要這種方法。 相反,我只能這樣做:

zip.Extract(extractDirectory);(然後我得到一個錯誤說該文件已經存在)

如果我做的:

zip.ExtractToFile(extractDirectory); 

我得到一個錯誤,指出該方法ExtractToFile做不存在。

另外一點需要注意的是,在做Using System.IO.Compression,只有這樣,我得到一個錯誤:

var zip = ZipFile.Read(finalFileToUnzip) 

它說,它無法找到的ZipFile(雖然我沒有添加DLL作爲參考,這樣做「添加引用 - >並選擇.dll文件」)

如果我做Using Ionic.Zip,它將接受:var zip = ZipFile.Read(finalFileToUnzip)

我不能找到有關這個問題的任何信息或以前的帖子,我希望任何人都可以幫助

任何想法可能是什麼問題?

這裏是更多的代碼:

for (int i = 0; i < listWithZipToUnpack.Count; ++i) 
{ 
    extractDirectory = Path.Combine(projectPath.ToString(), pathDir + listWithZipToUnpack[i]); 

    var finalFileToUnzip = Path.Combine(projectPath.ToString(), pathDir, "Lely", listWithZipToUnpack[i]); 

    if (finalFileToUnzip.Equals("--Vælg fil--")) { continue; } 

    using (var zip = ZipFile.OpenRead(finalFileToUnzip)) 
    { 
     if (!Directory.Exists(extractDirectory)) 
     { 
      Directory.CreateDirectory(extractDirectory+"-"+listWithZipToUnpack[i]); 
     } 

     foreach (var zipArchiveEntry in zip.Entries) 
     { 
      zipArchiveEntry.ExtractToFile(extractDirectory); 
     } 
    } 
} 

我使用.NET Framework 4.5.2

+2

在.NET 4.5中增加了'ZipFile' ...你使用的是哪個版本的框架? – 2014-10-30 16:00:33

+0

聽起來像你有一個'路徑'問題在這裏你可以展示你如何分配你需要壓縮的內容的文件/文件路徑.. – MethodMan 2014-10-30 16:03:05

+0

我使用.NET 4.5.2版本。 我編輯的代碼添加了更多的代碼2它 – user1960836 2014-10-30 16:07:18

回答

2

我解決它。問題是僅僅添加System.IO.Compression到引用是不夠的,你還必須添加System.IO.Compression.Filesystem

相關問題