读取器未检测到流的末尾。

时间:2019-04-20 22:34:30

标签: c# .net-core streamreader

我正在从命令行读取字符串。但是我的程序无法检测到流的结尾。我该如何重建它,或者有一种方法可以将EndOfStream显式设置为true?

List<String> str = new List<String>();

        using (StreamReader reader = new StreamReader(Console.OpenStandardInput()))

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();

                if (line != string.Empty)
                {
                    str.Add(line);
                }
            }

1 个答案:

答案 0 :(得分:1)

那是设计无法解决的。只要程序处于活动状态,stdin / stdout控制台流就会打开。在这种情况下,EndOfStream会在关闭应用程序之前执行。

一个很好的解决方案是

using System;

public class Example
{
   public static void Main()
   {
      string line;
      do { 
         line = Console.ReadLine();
         if (line != null) 
            Console.WriteLine("Now I have detected the end of stream.... " + line);
      } while (line != null);   
   }
}