Datei auslesen

sra

Erfahrenes Mitglied
Schon mein dritter Thread heute :D

Also - Ich habe eine Datei, die hat x Zeilen (eigentlich dachte ich sie habe nur 2). Nun mache ich 2 strings. In string line1 lese ich die erste Zeile ein, in string line2 den Rest.

Code:
TextReader tr = new StreamReader("datei.txt");
string line1 = tr.ReadLine();
string line2 = tr.ReadLine();
tr.Close();

Nun meine Frage: Da die Datei ja mehr als 2 Zeilen haben kann, wie teste ich, ob sie noch eine Zeile mehr hat?

Ich müsste ja dann quasi die zusätzliche Zeile an die line2 hinten dranhängen.

Danke für eure Antworten
 
Hallo!

Also bei einer kleinen Datei mag Dein System mit den einzelnen String-Variablen ja noch funktionieren, aber stell Dir vor sie hätte 100. Stelle also zuerst die einzelnen Strings auf ein String-Array um.
Code:
string [] arrZeilen = new string [1000];
Und schon hast Du Speicher für 1000 Zeilen bzw. Strings reserviert. Füllen kannst Du sie über einen Index.
Code:
arrZeilen[0] = "Zeile 1";
arrZeilen[1] = "Zeile 2";

// Über eine Variable gehts leichter
for (int i = 0; i < 10; i++)
{
    arrZeilen[i] = strAktuelleZeileAusDatei;
}
Noch praktischer wäre das ganze mit einer ArrayList, die handelt auch dynamische Feldgrößen.

Nun zu Deiner eigentlichen Frage ... Du musst Dir eine while-Schleife basteln die solange liest bis das Dateiende erreicht wurde.
Datei lesen

:)
 
Ich werds gleich mal ausprobieren. Aber wen ich dich (und die msdn) nun richtig verstanden habe, geht er dann mit peek zeichen für zeichen und nicht zeile für zeile durch (?) - naja... mal testen :D

vielleicht noch schnell im gleichen Atemzug:

Code:
            using (StreamReader sr = new StreamReader("TestFile.txt")) 
            {
                String line;
                // Read and display lines from the file until the end of 
                // the file is reached.
                while ((line = sr.ReadLine()) != null) 
                {
                    Console.WriteLine(line);
                }

Das ist aus der MSDN... was heisst das using in diesem Zusammenhang?
 
Hi,

So wie ich das verstanden habe Saber, will er nur die erste Zeile in einem String, und dann alle restlichen in einem anderen, also braucht er ja kein Array.

Code:
TextReader tr = new StreamReader("datei.txt");
string line1 = tr.ReadLine();
string line2 = "";

while (tr.Peek() != -1)
{
	ln += tr.ReadLine();
}

Die Peek Methode liest das nächste Zeichen, ohne die Position zu wechseln, sollte kein Zeichen mehr Vorhanden sein, gibt sie -1 zurück.

Mfg,
Alex
 
StreamReader Class

// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("TestFile.txt"))

Steht doch bei der MSDN dabei.

Und nein, du hast meinen Code falsch verstanden.

Mein Code-Snippet mach folgendes.
Peek() überprüft nur ob man noch etwas aus der Datei lesen kann, ob noch Daten vorhanden sind.
Im Schleifenrumpf wird dann eine Zeile gelesen und an den String angehängt.


Hinweis: Server hatte kurz Probleme mit der Uhrzeit, Serverzeit warum um eine Stunde vorne. Deswegen ist der eine Beitrag von mir etwas in der Zukunft.
 
Zurück