使用SharpZipLib制作没有文件夹结构的.tar.gz存档

时间:2012-12-16 09:32:07

标签: c# .net 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”。

如何删除文件路径?

由于

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,在找到这个问题之后我就明白了。

关键是在将Name添加到存档之前设置tarEntry的{​​{1}}属性。

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