3

.Net の GZipStream クラスを使用して圧縮しているファイルの元のサイズを追跡していますが、圧縮していると思っていたファイルのサイズが大きくなっているようです。それは可能ですか?

これは私が圧縮を行う方法です:

Byte[] bytes = GetFileBytes(file);

using (FileStream fileStream = new FileStream("Zipped.gz", FileMode.Create))
{
    using (GZipStream zipStream = new GZipStream(fileStream, CompressionMode.Compress))
    {
        zipStream.Write(bytes, 0, bytes.Length);
    }
}
4

2 に答える 2

4

はい、できます。.NET 4 で修正されました。

System.IO.Compression..::.DeflateStream および System.IO.Compression..::.GZipStream クラスの圧縮アルゴリズムが改善され、既に圧縮されているデータが膨張しなくなりました。これにより、圧縮率が大幅に向上します。また、ストリームを圧縮するための 4 ギガバイトのサイズ制限が削除されました。

チェック: GZipStream/DeflateStream は圧縮時にファイル サイズを大きくします

こちらもチェック SO: GZipStream と DeflateStream はより大きなファイルを生成します

于 2010-10-19T23:06:01.163 に答える