日期:2014-05-17  浏览次数:21029 次

从指定位置读取文件部分字节报错
小弟是个新手,想从指定偏移值处读取文件剩余的字节

long LeftOffset = 16875520;//偏移值
FileStream fs = new FileStream(Path.Combine(_rootfilepath, filename), FileMode.Open);
long TotalLen = fs.Length;//获得的文件长度是134217728

byte[] ReadByte = new byte[TotalLen - LeftOffset];
fs.Read(ReadByte,(int)LeftOffset,(int)(TotalLen - LeftOffset));//报错

报的错误是:“偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量。”

我试了下,TotalLen - LeftOffset = 117342208

然后我把报错代码改成
fs.Read(ReadByte,(int)LeftOffset,(int)(117340000));

我想问问大家
按理说已经比(TotalLen - LeftOffset)小了,为什么还是报如上的错误啊

如果要获取文件的剩余部分并保存的byte[]数组中的话,应该怎么改才不报这个错啊

------解决方案--------------------
提示你,流剩余的长度不够你读取的长度
------解决方案--------------------
fs.Read(ReadByte,(int)LeftOffset,(int)(TotalLen - LeftOffset-1));

你F12看看这个Read定义。。应该有写读取范围吧?