2017-01-20 19 views
0

私はSystem .IO.Compression in .net 4.5を使用しています.ZipArchiveとZipFileは、txtファイルをアーカイブに追加するために使用されます。約75のファイルがあります。 フォルダに入れてサイズを測定したときのファイル数は約15 KBZipArchive ZipFile not compressing

しかし、ZipArchiveを使用してアーカイブを作成すると、生成されるzipファイルサイズは21KBでした。 私は何か間違っているか、このZipArhiveはファイルを圧縮するのではなくアーカイブの単一ファイルに入れるだけですか?

これは、.zipの作成に使用されるDeflate Algorithmですか? これは私がやったことです。 .7zipファイルサイズのために?を使用することができる任意の高レベルの圧縮が1キロバイトの周りに、さらに小さくされているのみ

zipファイル内の各エントリは76バイトのローカルおよび中央のヘッダーのオーバーヘッドが
using (ZipArchive zippedFile = ZipFile.Open(zipFileName, ZipArchiveMode.Create)) 
       { 
        foreach (string file in filesTobeZipped) 
        { 
         zippedFile.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal); 
        } 
       } 

答えて

1

プラスパスを持つファイル名の長さ、2回、および22バイトの単一の終了レコード。たとえば、3文字の名前を持つ75個のファイルの場合、総オーバーヘッドは約6Kになります。各ファイルの平均圧縮時間は約200バイトです。これは短すぎて効果的に圧縮できません。各ファイルがzipファイルの200バイトのエントリのままだったら、21Kのzipファイルになります。実際にあなたが持っているものはどれですか。

+0

1KBの最小ファイルサイズと100-1000ファイルのバッチでは、あまりにも多くの圧縮を期待する必要はなく、ほぼ同じサイズか、すべての実際のサイズよりも大きくなると言いますこれらのファイル? – rahulmr

+0

はい............ –

+0

あなたのドライブでは、各ファイルの容量がそれよりも多くなります。 1バイトのファイルが占める領域は、お使いのオペレーティングシステムによって512バイトまたは1024バイトです。そしてそれは対応するディレクトリエントリによって取られるスペースを数えさえしない。 –

関連する問題