0
私はいくつかのDeflateCodedデータを解凍したいと思います。 残念ながら、私はいつも「デコード中に無効なデータが見つかりました」という例外があります。 しかし、データは有効です。C#decode(decompress)PDFファイルのデータを圧縮します。
private void Decompress()
{
FileStream fs = new FileStream(@"S:\Temp\myFile.bin", FileMode.Open);
//First two bytes are irrelevant
fs.ReadByte();
fs.ReadByte();
DeflateStream d_Stream = new DeflateStream(fs, CompressionMode.Decompress);
StreamToFile(d_Stream, @"S:\Temp\myFile1.txt", FileMode.OpenOrCreate);
d_Stream.Close();
fs.Close();
}
private static void StreamToFile(Stream inputStream, string outputFile, FileMode fileMode)
{
if (inputStream == null)
throw new ArgumentNullException("inputStream");
if (String.IsNullOrEmpty(outputFile))
throw new ArgumentException("Argument null or empty.", "outputFile");
using (FileStream outputStream = new FileStream(outputFile, fileMode, FileAccess.Write))
{
int cnt = 0;
const int LEN = 4096;
byte[] buffer = new byte[LEN];
while ((cnt = inputStream.Read(buffer, 0, LEN)) != 0)
outputStream.Write(buffer, 0, cnt);
}
}
アイデアはありますか?おかげさまで
なぜ最初の2バイトは無関係ですか? –
ストリームデコーダはRFC1951を使用しています。 DeflateStreamsと組み合わせて、最初の2バイトは無関係です。 ストリームデコーダがRC1950を使用している場合は、最初のバイトも使用する必要があります。 – user1011394
エラーが間違っていて、データが実際に有効であることを証明するために何をしましたか? –