2012-12-16 58 views
6

我正在嘗試使用SharpZipLib從一個文件夾壓縮.tar.gz文件的列表。問題不在於如何傳遞文件路徑 - 結果總是包含文件路徑 - 而不僅僅是文件自己。我在這裏錯過了什麼?使用SharpZipLib創建一個沒有文件夾結構的.tar.gz壓縮包使用SharpZipLib

string filesFolder = "c:\\testfolder\\test\\"; 
List<string> filesToZip = new List<string>() { filesFolder +"test1", filesFolder +"test2"}; 

using (FileStream fs = new FileStream(filesFolder +"myGz.tar.gz" , FileMode.Create, FileAccess.Write, FileShare.None)) 
using (Stream gzipStream = new GZipOutputStream(fs)) 
using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream)) 
    { 
     foreach (string filename in filesToZip) 
     { 
     { 
      TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename); 
      tarArchive.WriteEntry(tarEntry, false); 
     } 
     } 
    } 

我得到的是一個「myGz.tar.gz」文件。當我嘗試使用7.zip打開它時 - 我在歸檔文件中獲得完整的文件夾結構 - c:\ testfolder \ test \,並在其中 - 「test1」,「test」。

我該如何刪除文件路徑?

感謝

+0

這可能是有用的: http://stackoverflow.com/questions/1350653/c-sharp-sharpziplib-strips-irrelevant-directory-names –

+0

那是因爲你告訴它呢!你爲什麼認爲它以其他方式做? – leppie

+0

我沒有看到任何其他方式添加到焦油沒有給它完整的文件路徑。 M Sakher Sawan - 謝謝!它確實在zip文件上工作 - 但我找不到.gz文件的截取示例 – kiki

回答

2

我有同樣的問題,我只是發現這個問題後計算出來。

關鍵是將的屬性Name設置,然後將其添加到存檔中。

TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename); 
tarEntry.Name = Path.GetFileName(filename); 
tarArchive.WriteEntry(tarEntry, false); 
相關問題