2012-12-16 58 views
6

SharpZipLibを使用しているフォルダから.tar.gzファイルのリストを作成しようとしています。この問題は、ファイルのパスをどのように渡しても問題ありません。結果には常にファイルのパスだけでなく、ファイルのパスも含まれます。私はここで何が欠けていますか?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"というフォルダ構造があります。

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

おかげ

+0

これが役に立つかもしれません:あなたはあまりにもそれを言っているからです http://stackoverflow.com/questions/1350653/c-sharp-sharpziplib-strips-irrelevant-directory-names –

+0

!なぜあなたは他の方法でそれをしていると思いますか? – leppie

+0

完全なファイルパスを与えずにtarに追加する方法は他にありませんでした。 M Sakher Sawan - ありがとう!それはzipファイルで動作します - しかし、私は.gzファイルのパラパルの例を見つけることができませんでした – kiki

答えて

2

私は同じ問題を抱えていた、と私はこの質問を見つけた後、それを考え出しました。

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

TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename); 
tarEntry.Name = Path.GetFileName(filename); 
tarArchive.WriteEntry(tarEntry, false); 
関連する問題