2011-02-03 41 views
4

假定以下代码:与BinaryReader在上UploadedFile的空数组在c#

Stream file = files[0].InputStream; 

var FileLen = files[0].ContentLength; 

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

如果我上传CSV文件,它是10条记录(257个字节),BinaryReader在填充字节的用“0”的数组。

我也写一个环路到步骤通过BinaryReader在的ReadByte方法和在循环的第一次迭代,我已收到以下情况例外:

无法读取超出流的末尾

当我将CSV文件增加到200个记录时,一切正常。

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

+0

尝试`b.BaseStream.Position = 0;`我期望一个文件上传在原点开始叫`ReadBytes` – Adeel 2011-02-03 08:03:54

+0

@Adeel前... – 2011-02-03 08:20:58

回答

10

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

b.BaseStream.Position = 0;