使用SharpZipLib创建没有文件夹结构的.tar.gz归档文件

6
我正在尝试使用SharpZipLib从文件夹中.tar.gz压缩文件列表。问题在于,无论如何传递文件路径,结果始终包含文件路径本身,而不仅是文件本身。我在这里漏掉了什么?
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”。
我该如何删除文件路径?
谢谢

这可能很有用: https://dev59.com/LUnSa4cB1Zd3GeqPLB6x - Saw
这是因为你告诉它了!你认为它会以其他方式执行吗? - leppie
我没有看到其他方法可以在不提供完整文件路径的情况下添加到tar中。M Sakher Sawan - 谢谢!它可以用于zip文件 - 但我找不到.gz文件的类似示例。 - kiki
1个回答

4
我遇到了同样的问题,看到这个问题后我找到了解决方法。
关键是在将tarEntry添加到归档文件中之前,设置Name属性。
TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
tarEntry.Name = Path.GetFileName(filename);
tarArchive.WriteEntry(tarEntry, false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接