假设以下代码:
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个记录时,一切正常。
问题是,为什么这会在较小的文件上发生,并且有一种解决方法允许二进制读取较小的文件。
答案 0 :(得分:12)
不确定原因,但是当您在上传的流上使用BinaryReader时,需要明确设置起始位置。
b.BaseStream.Position = 0;