1

これは私が持っているものです:

        byte[] buff = new byte[1];
        byte[] buffer = { 10, 20, 30, 40 };
        Stream data = new MemoryStream();            
        data.Write(buffer, 2, 2);
        data.Position = 0;
        InflaterInputStream _inflater;            
        _inflater = new InflaterInputStream(data);
        int count = _inflater.Read(buff, 0, 1);

SharpZipBaseException: ヘッダー チェックサムが不正で予期しない EOF 例外をスローし、最後に data.Position が 2 になります。

何が問題なのか、それを修正する方法を誰か教えてもらえますか? 前もって感謝します。

4

1 に答える 1

4

InflaterInputStreamデータが「deflate」形式であると想定しています。有効な "deflate" ファイルではない 2 バイトのデータしか書き込んでいません。

このように言えば、WinZip に 2 バイトのランダムな blob を与えて、それを解凍するように要求した場合、WinZip は何をすると思いますか?

ここでのエラー メッセージは非常に明確です。ファイルの長さが不十分であり (予期しない EOF 例外)、ファイル形式に対して不適切な方法で開始されます (ヘッダー チェックサムが不正です)。疑わしい場合は、常にエラー メッセージを見て、そのエラーが発生する理由を考えてください。

于 2012-07-09T20:01:19.640 に答える