大量のデータを圧縮しようとしていますが、時には100GBの領域でデータを圧縮しようとしていますが、これは以前のサイズとまったく同じサイズのファイルが出てきたようです。他の誰かがこの問題をGZipStreamで持っていましたか?次のように大きなデータのGZipStream
私のコードは次のとおりです。
byte[] buffer = BitConverter.GetBytes(StreamSize);
FileStream LocalUnCompressedFS = File.OpenWrite(ldiFileName);
LocalUnCompressedFS.Write(buffer, 0, buffer.Length);
GZipStream LocalFS = new GZipStream(LocalUnCompressedFS, CompressionMode.Compress);
buffer = new byte[WriteBlock];
UInt64 WrittenBytes = 0;
while (WrittenBytes + WriteBlock < StreamSize)
{
fromStream.Read(buffer, 0, (int)WriteBlock);
LocalFS.Write(buffer, 0, (int)WriteBlock);
WrittenBytes += WriteBlock;
OnLDIFileProgress(WrittenBytes, StreamSize);
if (Cancel)
break;
}
if (!Cancel)
{
double bytesleft = StreamSize - WrittenBytes;
fromStream.Read(buffer, 0, (int)bytesleft);
LocalFS.Write(buffer, 0, (int)bytesleft);
WrittenBytes += (uint)bytesleft;
OnLDIFileProgress(WrittenBytes, StreamSize);
}
LocalFS.Close();
fromStream.Close();
STREAMSIZEは、ファイルのサイズを保持している8バイトのUInt64型の値です。私は元のファイルサイズを知っているので、私はこれらの8バイトをファイルの先頭に書き出します。 Writeblockの値は32kb(32768バイト)です。 fromStreamは、この例ではFileStreamからデータを取得するストリームです。圧縮されたデータの8バイトが問題の原因になりますか?
が小さいファイルにあなたのコードの仕事をしていますか? –
あなたのコードが小規模なデータセットを正しく圧縮できることを確認できますか?例えば、あなたが通常知っているテキストファイルはよく圧縮されます... – Nik