小编use*_*814的帖子

BinaryReader,按块读取,ArgumentException,Offset和length超出范围

我的流有1467个字节,一个块有489个字节,地址是978,我想要一个块.所以它是流中的最后一个块[从978到文件末尾]但是我给出了这个例外:偏移和长度超出了数组的范围或者计数大于从索引到源集合末尾的元素数量.

但为什么 ?从978到1467是489字节,我尝试从978读取489字节,所以为什么抛出这个异常?

这是我的代码.

public List<Block<T>> ReadBlock(int address)
{
    var result = new List<Block<T>>();
    using (var br = new BinaryReader(new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Read),Encoding.Default))
    {
         var buffer = new byte[BlockSize];
         br.Read(buffer, address, BlockSize);

         if (buffer.Sum(item => item) == 0)
         {
            result.Add(new Block<T>());
         }
         else
         {
            var block = new Block<T>();
            block.Deserialize(buffer);
            result.Add(block);
         }
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

.net c# binary stream

2
推荐指数
1
解决办法
2449
查看次数

标签 统计

.net ×1

binary ×1

c# ×1

stream ×1