2016-04-18 9 views
1

Hallo Freunde, ich bin zurück mit einer anderen Frage! Diesmal ist es ziemlich einfach. Ich lerne gerade, wie man Textdateien benutzt, und ich versuche, Benutzereingaben zu verwenden, um ein streamreader Argument zu vervollständigen. Das Problem, das ich habe, ist, dass, wenn das Programm findet, dass eine Textdatei existiert, es seinen Inhalt nicht zur Konsole druckt. Könnte mir jemand dabei helfen? Die Ausgabe zeigt nichts an und es wird unendlich weiter gedruckt. I.E. es scrollt einfach runter.So verwenden Sie Eingabe, um eine Textdatei in einer Konsolenanwendung zu finden

hier ist, was ich bisher habe.

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(); 
    } 
+1

Änderungen sind es sitzt nur an Ihrem readkey - weil Sie nur für 3 mögliche Probleme zugelassen haben. Wenn Sie einen Haken (Ausnahme e) hinzufügen, können Sie den Fehler ausdrucken und herausfinden, was Ihr Fehler ist – BugFinder

+1

Schritt durch Ihren Code. Vielleicht gibt es keine Daten in der Datei? Gehen Sie durch Ihren Prozess des Lesens von der Datei und sehen Sie, was es bekommt. Überprüfen Sie die anderen Eigenschaften Ihres Objekts, um zu sehen, ob Sie etwas falsch machen. – krillgar

+1

Check out http://www.dotnetperls.com/streamreader – AlexDev

Antwort

1

Ändern Sie die folgenden Schritte aus:

while (reader != null) 

An:

while (!reader.EndOfStream) 

Auf diese Weise können Sie aus der Datei bis zum Ende lesen.

Readline müssen innerhalb der Schleife sein:

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

zu:

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

Danke für die Eingabe! Ich war in der Lage, meinen kleinen Fehler zu beheben! Es ist erstaunlich, wie schnell Menschen auf dieser Website reagieren haben Sie hier. <3 – Nate

+0

Gern geschehen – ehh

0

Ihr Versuch

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

Für bessere Lesbarkeit Zweck, können Sie dies ändern können Block sollte ein sein s folgt;

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