2016-04-18 18 views
3

私はこのルーチンを使用して、既存のディレクトリからZipfileを作成しています。これはコンパイルされ、実行時エラーをスローしません。しかし、それはサイズを減らすことになると、タスクを実行しません。なぜフォルダを圧縮してもサイズが圧縮されないのですか?

using Ionic.Zip; 

//.. 

using (ZipFile zip = new ZipFile()) 

{ 
    zip.AddDirectory(SourceFolder); 

    zip.Save(DestinationFolder + FolderName + ".zip"); 
} 

オリジナルフォルダがPNG画像、1つの.xlsxファイルと1つの.xmlファイルを持っており、zip形式のフォルダが常に同じサイズ(厳密に等しいが、非常に類似していない)を持っています。考えられる理由は何ですか?不正なライブラリですか?

これらのフォルダは常に生成されます。したがって、ディスク上に多くのスペースをとり、私たちは毎日チェック/清掃する必要があります。それを減らすために私は何ができますか?

zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; 

をしかし@JonSkeetとして、多くのやることはないだろうと述べた。

+4

データのほとんどが既に圧縮された画像であれば、それはまったく予想通りです。同じファイルセットに対して通常のzipツールを実行するだけの場合はどうなりますか? –

+0

イメージを圧縮することはできません.xlsxはすでに圧縮されています – Amine

+0

なぜダウン投票ですか? –

答えて

5

あなたはこの行を追加してみてくださいすることができます。写真や動画はすでに圧縮されていません。

それはOPのためではなく、今後の参考のために動作しませんでした:私はここのCodePlex上で入手可能な例の数見つけenter image description here

+0

私にそれを打つ:)。 – anierzad

+0

これは面白いかもしれません。そのコード行では、結果のサイズが大きくなりました –

+1

ジップは画像用ではありません。スペースを節約したい場合は、画像を別の形式に変換することができます。このアプローチの問題は、pngで動作しないことです。ここを参照してください。http://stackoverflow.com/questions/4418454/c-seeking-png-compression-algorithm-library – Claudius

2

https://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

しかし、私が見つけた最も関連性の高い1本がある、特徴最良の圧縮方法を選択してください:

using (ZipFile zip = new ZipFile()) 
{ 
    zip.CompressionLevel= Ionic.Zlib.CompressionLevel.BestCompression; 
    zip.AddFile("Datafeed-2008-12-20.csv"); 
    zip.Save(ZipFileToCreate); 
} 

私はこれが役立つことを望みます。

+0

結果のサイズが増えました –

+1

もう一度実行してみてください圧縮可能なコンテンツ。あなたの '.xlsx'ファイルと' .xml'ファイルを除くすべてが既によく圧縮されている可能性が高いです。 – anierzad

+0

.xlsxはすでにzipファイルです。 –

関連する問題