是否有理由不检查带有Position和Length的C#流中的EOF

本文关键字:EOF Length 不检查 有理由 Position 是否 | 更新日期: 2023-09-27 18:26:36

在寻找一种阅读到FileStream结束的好方法时,我遇到了一篇旧的文章,C#-Stream/FileStream EOF,其中提供了三个答案(尽管没有接受)。不过,在使用它们时,我还记得FileStream对象具有Position和Length属性。在我看来,(对于适当打开的FileStream fs

while (fs.Position < fs.Length)
{
    // Read more from file
}

应该是一种直接的读取方式,直到文件结束。这个方法和那些属性没有被提及,我只是好奇:

这是否有其他属性或方法可能避免的缺点?

是否有理由不检查带有Position和Length的C#流中的EOF

一个缺点是并非所有Stream实例都有长度。Stream可能支持没有确定长度的网络连接。因此,Length属性只会抛出一个异常。