2011-02-09 12 views
2

私は、プログラムの中のいくつかのファイルをzipするために、codeplexのDotNetZip DLL(http://dotnetzip.codeplex.com/)を使用しています。ディレクトリ構造を保存したファイルを圧縮する

問題ディレクトリ構造を保持しているファイルを圧縮した後、zipファイルを解凍しているときに、すべての親フォルダが再び作成されていて、そのファイルしか表示できません。ソースファイルが存在する場合は非常に厄介です

g:\ Archive \ LogFiles \ W3SVC1 \ abc.logからファイルを圧縮し、解凍後に 'abc.zip'ファイルを作成すると、Archive \ LogFiles \ W3SVC1 \が作成されていて、abc.logファイルしか見ることができません。ここで 'g:'は私の共有ドライブの名前です。

これらの親フォルダをすべて削除して、すぐに圧縮してZipファイルに移動して開くことができます。 ZipファイルのPathプロパティを確認し、Archive \ LogFiles \ W3SVC1を表示しています。どうにか私はこれをプログラム的に削除する必要がありますが、簡単にオプションを見つけることはできません。私が使用しています

コードは次のようである:

using (ZipFile zip = new ZipFile()) 
{ 
    if (fileExtension != null) 
    { 
     zip.AddFiles(from f in sourceDir.GetFiles() where f.FullName.EndsWith(fileExtension) select f.FullName); 
    } 
    else 
    { 
     zip.AddFiles(from f in sourceDir.GetFiles() select f.FullName); 
    } 
    zip.Save(DestinationDir + OutFileName); 
} 

私はまた、「偽の」しかし、誰の利益にreserveDirectoryHierarchyを設定することにより、Addfilesの過負荷方法を試してみました。

私に何をすべきか教えてください。

多くの方々のおかげです。

答えて

1

私は、Addfilesのオーバーロードメソッドを正しく呼び出すことができませんでした。 Nullの代わりに空の文字列を渡しましたが、今はディレクトリ構造を保持していません。 ですので、更新されたコードは以下のようになります:

if (fileExtension != null) 
       { 
        zip.AddFiles(from f in sourceDir.GetFiles() where f.FullName.EndsWith(fileExtension) select f.FullName,false,""); 

       } 
       else 
       { 
        zip.AddFiles(from f in sourceDir.GetFiles() select f.FullName,false,""); 
       } 
       zip.Save(DestinationDir + OutFileName); 
関連する問題