我最近看到了这个网页http://www.yoda.arachsys.com/csharp/readbinary.html ,它解释了从文件流中读取时要采取的预防措施。它的要点是以下代码并不总是有效:
// Bad code! Do not use!
FileStream fs = File.OpenRead(filename);
byte[] data = new byte[fs.Length];
fs.Read (data, 0, data.Length);
这是危险的,因为 Read 的第三个参数是要读取的最大字节数,您应该使用 Read 的返回值来检查实际读取了多少。
我的问题是,在从内存流中读取数据时,您是否应该采取同样的预防措施?在哪些情况下 Read 可能会在读取所有字节之前返回?