【问题标题】:FileStream.Read(...): Will I ever get a nibble rather than byte?FileStream.Read(...):我会得到一个半字节而不是字节吗?
【发布时间】:2011-03-05 12:01:17
【问题描述】:
我正在对 C# 中的字节数组执行一些按位运算。我通过调用 FileStream.Read 来获取数组。我刚刚意识到我不确定如果文件在某处有坏字节或损坏的字节会发生什么。例如,可能会从末端切掉一小口或类似的东西。 FileStream 会用它做什么? Read 方法是否会通过“四舍五入”来消除混乱的字节?会抛出异常吗?或者这是几乎永远不会发生的事情?
谢谢,
布莱恩
【问题讨论】:
标签:
c#
.net
bytearray
filestream
【解决方案1】:
如果您的FileStream.Read 调用成功,则不存在文件有坏字节或损坏字节之类的东西。成功读取的每个字节以及文件的一部分都是一个从 0 到 255 的值。程序如何解释它是最重要的。
如果FileStream.Read 例如返回 5 个字节,那么您可以相信这 5 个字节已从文件中成功读取,并且字节的所有位都已成功放入您的缓冲区。
虽然有这样的事情,例如硬盘上的坏集群,在这种情况下,您的读取会因某种异常而失败。
为了完整起见,我还应该提到每种文件类型都有一种文件格式。 IE。你应该如何解释二进制数据。一个字节或几个字节可能不遵循文件格式。通过这种方式,您可以将字节视为损坏或无效,但就文件格式指定的内容而言,它并不是真正的损坏或无效。