2012-12-16 77 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); 
相关问题