gpt4 book ai didi

c# - 使用 StreamReader.EndOfStream 的问题?

转载 作者:行者123 更新时间:2023-11-30 13:49:52 32 4
gpt4 key购买 nike

所以我正在做一个项目,我正在读取配置文件。配置文件只是一个字符串列表,如“D 1 1”、“C 2 2”等。现在我还没有用 C# 进行过读/写,所以我在网上查找它希望找到某种形式的演绎C/C++ .eof() 的。我找不到。

所以我所拥有的是...

TextReader tr = new StreamReader("/mypath");

在所有关于我如何读到文件末尾的在线示例中,不断出现的两个示例是

while ((line = tr.ReadLine() != null)

while (tr.Peek() >= 0)

我注意到 StreamReader 有一个 bool EndOfStream,但没有人建议它,这让我相信该解决方案有问题。我最终像这样尝试...

while (!(tr as StreamReader).EndOfStream)

它似乎工作得很好。

所以我想我的问题是,将 TextReader 转换为 StreamReader 并检查 EndOfStream 时会遇到问题吗?

最佳答案

一个明显的缺点是它使您的代码 StreamReader 特定。鉴于您可以仅使用 TextReader 轻松编写代码,为什么不这样做呢?这样,如果您需要使用 StringReader(或类似的东西)进行单元测试等,就不会有任何困难。

我个人总是使用“读取一行直到它为空”的方法——有时通过扩展方法以便我可以使用

foreach (string line in reader.EnumerateLines())
{
}

EnumerateLines 将成为 TextReader 上使用迭代器 block 的扩展方法。 (这意味着您也可以轻松地将它用于 LINQ 等。)

关于c# - 使用 StreamReader.EndOfStream 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047652/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com