Von ArrayList zu CSV zu ArrayList

werdas34

Bekanntes Mitglied
Hallo,

ich soll eine Methode schreiben, die aus einer ArrayList eine CSV-Datei schreibt. Dazu soll auf CSV-spezifische Klassen verzichtet werden. Also nur Standard Datei-Lese-und-Schreibe-Klassen. (Auch bei der nächsten Methode gilt dies mit den Klassen)
Habe ich gemacht(Gerne Optimierungen etc mitteilen)
Java:
void writeCSV() throws IOException {
        try(Writer writer = new FileWriter("List.csv")){
           
            for(int i = 0; i < this.cList.size(); i++) {
                String str = cList.get(i).getName() + "," + cList.get(i).getBirthyear() +  "," + cList.get(i).getDeathyear() + "\n";
               
                writer.write(str);
            }
        }
    }

Nun soll ich aus dieser CSV Datei wieder eine ArrayList machen.
Da stoße ich auf mehrere Probleme.
Woher weiß ich das es keinen weiteren Eintrag in der Datei gibt?
Wie schaffe ich es, das jede Zelle in z.B einen String gespeichert wird. Also wie kann ich die Inhalte voneinander trennen? Nicht das der Inhalt von Zelle1 nur halb ausgegeben wird oder Zelle1 und Zelle2 zusammen ausgeben wird.

Hoffe es ist verständlich.

mfg werdas34
 
Woher weiß ich das es keinen weiteren Eintrag in der Datei gibt?
Wenn du die Datei Zeile für Zeile einliest dann weißt du das die Datei zu Ende ist wenn null beim einlesen zurück kommt.

Wie schaffe ich es, das jede Zelle in z.B einen String gespeichert wird.
Files#readAllLines(...) gibt dir eine Liste<String> zurück, die die einzelnen Zeilen der Datei enthält. Oder einfach manuel Zeile für Zeile einlesen

Trennen kannst du dann indem du am Seperator splittest (split Methode) .. In deinem Fall also am Komma
 
Danke für die schnelle Antwort.

Nur wie nutze ich Files.readAllLines am besten wenn ich keinen richtigen Path habe(soll einfach in der IDE abgelegt werden).

Oder gibts noch andere Möglichkeiten, dies umzuseten?

Dient auch nur einem Übungszweck.
 
Jede Datei hat einen Pfad 😉 gibt auch genügend Beispiele dazu im Netz.

Du kannst auch die Datei "händisch" mit einem BufferedReader oder Scanner einlesen
 
Ja, das schon. Schreibe nur demnächst eine Prüfung in Java (schriftlich) und da, wird höchstwahrscheinlich etwas mit CSV einlesen auslesen etc. drankommen.

Und in der Prüfung, soll es halt dann funktionieren. Und wenn ich nun irgendwie den Path schriftlich hinschreiben muss, was ja bei jedem System anders ist, wirds schwierg.

Also gibts evtl. andere Möglichkeiten, das umzusetzen, oder dynamisch zu gestalten?
 
Sagt ja keiner dass du den Pfad selber hinschreiben musst. new File("bla.txt").toPath() liefert dir bspw das passende Path Objekt zu deiner Datei...

Wie gesagt du kannst auch einfsch mit einem BufferedReader oder Scanner die Datei einlesen..

Gibt's für alles genug Beispiele im Netz
 

Neue Themen


Zurück
Oben