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」。

ファイル パスを削除するにはどうすればよいですか?

ありがとう

4

1 に答える 1

4

私は同じ問題を抱えていましたが、この質問を見つけた直後にそれを理解しました。

鍵は、アーカイブに追加する前に、のNameプロパティを設定することです。tarEntry

TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
tarEntry.Name = Path.GetFileName(filename);
tarArchive.WriteEntry(tarEntry, false);
于 2016-11-07T15:50:57.283 に答える