2016-04-07 7 views
0

Ich habe ein seltsames Problem mit StreamReader. Mein Programm ist ein Konsolenprogramm und sollte eine Verzeichnisstruktur für alle * .cs-Dateien durchlaufen. Überprüfen Sie dann, ob ein bestimmtes Wort in der Datei enthalten ist, und schreiben Sie den Dateipfad in die Ausgabe.StreamReader.ReadToEnd gibt den Dateipfad zurück

using (StringReader sr = new StringReader(fPath)) 
{ 
    string content = sr.ReadLine(); // sr.ReadToEnd(); 
    Debug.WriteLine(content); 
    int found = content.IndexOf(p); 
    if (found != -1) 
    { 
     result = true; 
    } 
} 

Dies ist der Code, den ich verwende, um die Arbeit in einer bestimmten Datei zu finden. Das Problem ist, dass sr.ReadToEnd (aber auch ReadLine) den Wert fPath nicht den Inhalt der Datei zurückgibt!

Die Datei existiert und ist nicht gesperrt.

Wenn FPATH ist: "C: \ TEMP \ DC_LV1_LaMine_Mk2Plus_134_ix220_20160404 \ Alarm.Script.cs"

Inhalt wird sein: "C: \ TEMP \ DC_LV1_LaMine_Mk2Plus_134_ix220_20160404 \ Alarm.Script.cs"

Kann jemand sehen, was ich falsch gemacht habe?

Antwort

4

Sie verwenden String Reader statt Stream- Reader

StringReader implementiert einen Textreader, die von einer Zeichenfolge liest

StramReader implementiert einen Textreader, die Zeichen aus einem Byte-Stream liest in eine bestimmte Codierung

Wenn Sie aus einer Datei lesen möchten verwenden diese constructor für Stream

Sie auch File.ReadAllText, wenn die Datei kleiner verwenden könnte, und Sie haben genügend Ressourcen, alles auf einmal

Für eine umfassende Übersicht finden Sie this Artikel

+0

ich nicht zu lesen weiß wie oft ich den Code gelesen habe und das immer noch vermisst habe! – Andis59

+0

Manchmal brauchen Sie nur ein frisches Paar Augen, um es zu betrachten. Deshalb ist Code Review eine gängige Praxis! – ironstone13

+0

@ Andis59, bitte als Antwort markieren, wenn es dir geholfen hat. Prost! – ironstone13