Mat*_*ald 3 .net c# file-io streamreader textreader
所以我正在做一个我在配置文件中读取的项目.配置文件只是一个字符串列表,如"D 1 1","C 2 2"等.现在我还没有在C#中进行过读/写操作,所以我在网上查找了它,期待找到某种类型的再现C/C++ .eof().我找不到一个.
所以我拥有的是......
TextReader tr = new StreamReader("/mypath");
Run Code Online (Sandbox Code Playgroud)
在网上我发现如何读到文件末尾的所有例子中,两个例子一直在发生
while ((line = tr.ReadLine() != null)
Run Code Online (Sandbox Code Playgroud)
要么
while (tr.Peek() >= 0)
Run Code Online (Sandbox Code Playgroud)
我注意到StreamReader有一个bool EndOfStream,但是没有人建议它让我相信这个解决方案有问题.我结束了这样尝试......
while (!(tr as StreamReader).EndOfStream)
Run Code Online (Sandbox Code Playgroud)
它似乎工作得很好.
所以我想我的问题是,我是否会遇到将TextReader转换为StreamReader并检查EndOfStream的问题?
一个明显的缺点是它使您的代码StreamReader
具体化.鉴于您可以使用just轻松编写代码TextReader
,为什么不这样做呢?这样,如果您需要使用StringReader
(或类似的)单元测试等,就不会有任何困难.
就个人而言,我总是使用"读取行直到它为空"的方法 - 有时通过扩展方法,以便我可以使用
foreach (string line in reader.EnumerateLines())
{
}
Run Code Online (Sandbox Code Playgroud)
EnumerateLines
然后是TextReader
使用迭代器块的扩展方法.(这意味着你也可以轻松地将它用于LINQ等.)