StreamReader



  • Moin,

    bin grad dabei mein altes C++ Projekt in C# umzuschreiben. Habe mich in C# eingelesen und bin jetzt ein wenig am rumbasteln. Doch nun komm ich nicht mehr weiter.

    Hab eine test.csv Datei mit folgendem Inhalt:

    max; mustermann; 18
    nina; musterfrau; 45

    Mein C++ Code:

    string firstname, lastname, age;
    ifstream csvread;
    csvread.open("test.csv", ios::in); 
    if(!csvread.is_open()) cerr << "Fehler beim Lesen!" << endl;
    else{
    	while(!csvread.eof()){
    		getline(csvread, firstname, ';');
    		getline(csvread, lastname, ';');
    		getline(csvread, age, '\n');
                       // mit firstname, lastname und age arbeiten
    		}
    	}
    	csvread.close();
    }
    

    Wie kann ich das jetzt in C# realisieren?
    Doku von MS habe ich schon gelsen. (http://msdn.microsoft.com/de-de/library/system.io.streamreader(VS.80).aspx)
    Aber wie kann ich das lesen der einzelnen Zeilen aufsplitten? Also bis ; lesen, dann wird in einen anderen string gespeichert?

    Gruß Domi



  • Blacky666 schrieb:

    ... und bin jetzt ein wenig am rumbasteln. Doch nun komm ich nicht mehr weiter.

    Was hast du denn bisher probiert?

    Übrigens: Du brauchst nicht direkt mit Streams arbeiten -> Du kannst auf die Methoden der Klasse File zurückgreifen.



  • inflames2k schrieb:

    Was hast du denn bisher probiert?

    public class ReadCsv
        {
            string firstName = "";
            string lastName = "";
            string age = "";
    
            public void csvRead(string csvFilePath)
            {
                try
                {
                    StreamReader csvFileRead = new StreamReader(csvFilePath);
                    firstName = csvFileRead.ReadLine();
                    lastName = csvFileRead.ReadLine();
                    age = csvFileRead.ReadLine();
                }
                catch (DirectoryNotFoundException e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }
    

    Das ist jetzt nur der Teil meines Codes den ich nich hinbekomme. Die Datei wird zwar ausgelesen, aber nicht so wie ich möchte...

    Ich kann das ganze auch mit der Klasse File realisieren?! Hm... Die Klasse kenn ich noch nicht, die müsste ich mir erstmal anschauen.



  • Das heißt du liest Zeilenweise ein, sind die Inhalte denn auch Zeilenweise untereinander in der Datei? Oder sind diese hintereinander?



  • inflames2k schrieb:

    Das heißt du liest Zeilenweise ein, sind die Inhalte denn auch Zeilenweise untereinander in der Datei? Oder sind diese hintereinander?

    Jup soweit war ich auch schon.

    So schaut die .csv Datei aus:

    [zeile 1]max; mustermann; 18[\n]
    [zeile 2]nina; musterfrau; 45[\n]

    Ziel ist:

    Zeile 1 einlesen, max in firstname, mustermann in lastname und alter in age speichern. Danach wird mit den strings (lastname, firstname und age) gearbeitet.
    Jetzt wird, nach dem selben Prinzip, Zeile 2 ausgelesen.



  • Hallo Blacky,

    lese zeilenweise ein und splitte dann diese Zeile entsprechend des Trennzeichens.
    Vor kurzem habe ich unter http://www.c-plusplus.net/forum/p2077864#2077864 dies schon mal mit Code gepostet 😉



  • Th69 schrieb:

    Hallo Blacky,

    lese zeilenweise ein und splitte dann diese Zeile entsprechend des Trennzeichens.
    Vor kurzem habe ich unter http://www.c-plusplus.net/forum/p2077864#2077864 dies schon mal mit Code gepostet 😉

    Oh man, manchmal denke ich einfach zu kompliziert. Thx für den Tipp. 🙂


Anmelden zum Antworten