2012-02-16 28 views
2

SharpZipLibを使用していくつかのフォルダを圧縮するにはパックしたいです。私はここからC#コードを使用して、それをパックするときの例では、SharpZipLibで空のディレクトリをパック

directory1: 
    directory2: 
     file1 
    filde2 
    directory3: 
     directory4: 

をstucture:

http://wiki.sharpdevelop.net/SharpZipLib-Zip-Samples.ashx#Create_a_Zip_with_full_control_over_contents_0

を私はdirectory3directory4せずに、ZIPアーカイブを取得します。

私の質問は、directory3directory4でアーカイブを取得する方法です。

答えて

2
FastZip fastZip = new FastZip(); 

fastZip.CreateEmptyDirectories = true; 
// Include all files by recursing through the directory structure 
bool recurse = true; 
// Dont filter any files at all 
string filter = null; 
fastZip.CreateZip("fileName.zip", @"C:\SourceDirectory", recurse, filter); 

注意しなければならないのは、UTF-8ファイル名を処理できないということです。ここで

は、ドキュメントWikiへのリンクです:

http://wiki.sharpdevelop.net/SharpZipLib_FastZip.ashx

+0

名前のみがutf-8やコンテンツを使用できません。 utf-8テキストファイルである 'aa.txt'という名前のファイルをパックできますか? – nirmus

+0

@nirmus - ファイル名だけです。 –

+0

ありがとう、私は空のディレクトリを持っていますが、私はFastZip.ExtractZipを使用する場合、空のディレクトリはありません;)興味深い; p – nirmus

2

あなたはプログラムがエントリとしてフォルダを追加することができます。

以下のコードを各フォルダのループに追加します。

//Here we create a path for a new entry, 
//but this time with the '\' in the end, its a folder 
string sEntry = sFolder.Substring(iFolderOffset) + "\\"; 
sEntry = ZipEntry.CleanName(sEntry); 
ZipEntry zeOutput = new ZipEntry(sEntry); 
zsOutput.PutNextEntry(zeOutput); 
zsOutput.CloseEntry(); 

まだ解凍していません。