9

次のコードを想定します。

Stream file = files[0].InputStream;

var FileLen = files[0].ContentLength;

var b = new BinaryReader(file);
var bytes = b.ReadBytes(FileLen);

10 レコード (257 バイト) の CSV ファイルをアップロードすると、BinaryReader はバイト配列を「0」で埋めます。

また、BinaryReader の ReadByte メソッドをステップ実行するループも作成しました。ループの最初の繰り返しで、次の例外を受け取りました。

ストリームの終わりを超えて読み取ることができません

CSV ファイルを 200 レコードに増やすと、すべてが正常に機能しました。

問題は、なぜこれが小さなファイルで発生するのか、そして小さなファイルのバイナリ読み取りを可能にする回避策があるかということです。

4

1 に答える 1

21

理由はわかりませんが、アップロードされたストリームで BinaryReader を使用している場合、開始位置を明示的に設定する必要があります。

b.BaseStream.Position = 0;
于 2011-02-07T21:58:50.040 に答える