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 文件增加到 20000 条记录时,一切正常。

那么问题是,为什么这会发生在较小的文件上,是否有一种解决方法允许对较小的文件进行二进制读取。

4

1 回答 1

21

不知道为什么,但是当您在上传的流上使用 BinaryReader 时,需要明确设置起始位置。

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