如何使用输入在控制台应用程序中查找文本文件

时间:2016-04-18 12:10:33

标签: c#

你好朋友我回来了另一个问题!这次它实际上非常基本。我正在学习如何使用文本文件,我正在尝试使用用户输入来完成streamreader参数。我遇到的问题是,当程序确实发现存在文本文件时,它不会将其内容打印到控制台。有人可以帮我吗?输出没有显示任何内容,并且它继续无限而不打印。 I.E.它只是向下滚动。

这是我到目前为止所拥有的。

static void Main(string[] args)
    {
        Console.WriteLine("Hello! This application lets you write application entries!");
        Console.WriteLine("Please Enter The text File: ");
        string input = Console.ReadLine();
        try
        {
            StreamReader reader = new StreamReader("C:\\Users\\Nate\\Desktop\\TextFiles\\" + input);
            using (reader)
            {
                string line = reader.ReadLine();
                while (reader != null)
                {

                    Console.WriteLine(line);
                    line = reader.ReadLine();
                }
            }
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("That file does not exist!");
        }
        catch (DirectoryNotFoundException)
        {
            Console.WriteLine("Directory does not exist!");
        }
        catch (IOException)
        {
            Console.WriteLine("Oops! Something Wrong happened!");
        }
        Console.ReadKey();
    }

2 个答案:

答案 0 :(得分:1)

更改以下内容:

while (reader != null)

要:

while (!reader.EndOfStream )

通过这种方式,您正在从文件中读取它直到结束。

ReadLine需要在循环中:

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

出于可读性目的,您可以更改此内容:

StreamReader reader = new StreamReader("C:\\Users\\Nate\\Desktop\\TextFiles\\" + input);
using (reader)
{
    //...
}

要:

using (StreamReader reader = new StreamReader(@"C:\Users\Nate\Desktop\TextFiles\" + input))
{ 
    // ...
}

答案 1 :(得分:0)

您的尝试块应如下所示;

try
{
   StreamReader reader = new StreamReader(@"C:\Users\Nate\Desktop\TextFiles\" + input);
   using (reader)
   {
       while (!reader.EndOfStream)
       {
           var line = reader.ReadLine();
           Console.WriteLine(line);
       }
   }
}