Java Daten der ArrayList in einer Textdatei speicher und auch lesen?

Wozu braucht er Trennzeichen? Angesichts seiner Anforderung macht CSV überhaupt keinen Sinn. Er schreibt einen String pro Zeile. Da hat er mit deinem bzw. dem von dir favorisierten Code schon mal das Problem, dass du die Lines mit \n separierst, was nicht portabel ist. Zudem schließt du deine Ressourcen im Fehlerfall nicht. Um solche Dinge braucht man sich keinen Kopf machen, wenn man Libs bzw. die Standardlib benutzt.

Selbst wenn ich CSV schreiben wollte, würde ich das nicht selbst schreiben und hundert Fehler machen, weil ich was nicht bedenke, sondern einfach OpenCSV benutzen.

Es ist kein Zeichen von Schwäche, wenn man als Entwickler eher zu Libs greift, statt Code selbst zu schreiben. Das bedeutet nicht, dass man es nicht selbst schreiben könnte, sondern dass man sich bewusst ist, dass andere schon mehr Hirnschmalz in solche Probleme gesteckt haben, als man selbst (in der kurzen Zeit, in der man vor dem Problem steht).

Edit: da ich noch übersehen hatte, dass hier Objekte und keine Strings vorliegen, will ich nicht nur rumtönen, sondern auch da noch mit einem Beispiel helfen:
Code:
    private static class Person {
        private String firstName;
        private String lastName;
        private int age;
        public Person(String firstName, String lastName, int age) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.age = age;
        }
    }



    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Max", "Mustermann", 18));
        people.add(new Person("computer", "base", 15));
        List<String> peopleStrings = people.stream().map(p -> String.format("%s, %s, %d", p.lastName, p.firstName, p.age)).collect(Collectors.toList());
        for (String s : peopleStrings) {
            System.out.println(s);
        }
    }
Von daher war die Richtung CSV ja doch nicht ganz falsch. Asche auf mein Haupt diesbezüglich!
 
Zuletzt bearbeitet:
Natürlich ist der Einsatz von Libraries sinnvoll. Darum geht es gar nicht. Nur wird da viel versteckt, dass man als Anfänger vielleicht mal gesehen oder im Ansatz selbst geschrieben haben sollte.

Ist das "static" keyword bei "Person" im gegebenen Beispiel (das erstmal prinzipiell nicht in eine Datei schreibt - es sein denn man lenkt den standard output der Konsole sonst wo hin) für irgend etwas nützlich?
 
Das static ist nötig, weil du sonst die nested class nicht (so leicht) instantiieren kannst. Entfernt man es, meint der compiler:
No enclosing instance of type Sandbox is accessible. Must qualify the allocation with an enclosing instance of type Sandbox (e.g. x.new A() where x is an instance of Sandbox).
wobei Sandbox einfach meine umschließende Klasse ist. Davon gibt es keine Instanz. Ich könnte also höchstens schreiben
Code:
people.add(new Sandbox().new Person("Max", "Mustermann", 18));
Solchen Code hab ich aber noch nie gesehen. Macht man halt nicht so. Hier ist das ganz nett beschrieben.

Und ja, da wird noch nicht in eine Datei geschrieben, das ist richtig. Das ist quasi nur die Zeile zur Serialisierung.
 
wieder was gelernt :-)
 
Zurück
Oben