Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Objekte von zwei klassen in zwei verschiedene Textdateien schreiben
He leute , ich komme einfach nicht weiter mit dem Punkt 7 und 8 .. (Primär 7)
Ich dachte an einem FileWriter , ur weiß ich nicht was ich in der write methode() als parameter übergeben soll um alle objekte der klassen in eine Textdatei zu speicher..
(aufgabe siehe anhang)
Mein code dafür wäre dieser bis dato :
Java:
public static void writeStudentintoFile() {
FileWriter writer;
int c = 0;
File file = new File("CourseDetails.txt");
try {
writer = new FileWriter(file,true);
writer.write(c);
writer.flush();
writer.close();
}catch(IOException e) {
System.out.println("Error...");
}
}
}
Zunaechst mal kannst du try-with-resources verwenden, dann wirkt der Code um einiges kompakter und ist etwas leichter zu lesen:
Java:
// fileWriter wird beim verlassen des try-Blocks direkt geschlossen.
try (FileWrite fileWriter = new FileWriter(file, true)) {
writer.write(value);
// fileWriter.close() wird .flush() durchfuehren.
} catch (IOException e) {
// Im Zweifelsfall **immer** die Exception ausgeben, oder mit einer
// neuen Exception weiterwerfen (new AnotherException("message", e)).
// Nicht "schlucken", dass fuehrt nur dazu dass du sehr viel suchen
// musst wenn es mal einen Fehler gibt.
e.printStackTrace();
}
Aber um zu deiner eigentlichen Frage zu kommen, du musst dass die in die Datei schreiben was in der Klasse steht, die ganze Sache nennt sich "serialisieren". Also du serialisiert ein Objekt in eine andere Form. Da gibt es jetzt drei Moeglichkeiten:
Du machst es per Hand, zu was ich dir in diesem Fall raten wuerde.
Letzteres wuerde ich dir Zwecks lernen wirklich anraten, und es ist um einiges einfacher als du denkst. Was du machen musst, ist einfach nur die Werte aus deiner Klasse lesen und in die Datei schreiben. Im einfachsten Fall waere das:
Und wenn du die Klasse wieder aufbauen willst aus dieser Information, machst du genau das gleiche, nur halt dass du aus der Datei liest und die Werte in die Klasse setzt. Das geht hier sehr einfach, die resultierende Datei ist aber nicht lesbar fuer einen Menschen (auszer du stehst darauf Hex-werte zu addieren).
Also ich wuerde dir zu einer recht simplen, und absolut einfachen Loesung raten: Property Dateien. Java bringt Unterstuetzung fuer das lesen von Konfigurations-Dateien mit, sogenannten Property-Files. Das ist im Groszen und Ganzen einfach nur eine ini-Datei ohne Gruppen. Also kann man die auch gut selbst lesen, editieren und erstellen. Die Klasse dazu ist java.util.Properties. Du schreibst also alle deine Werte in die Datei, und liest diese dann einfach wieder aus:
du willst Arrays in property files speichern? Ich halte das für keine gute Idee. Nimm xml, json, serialisiere das Objekt oder schreibe zeilenweise in eine Textdatei.
du willst Arrays in property files speichern? Ich halte das für keine gute Idee. Nimm xml, json, serialisiere das Objekt oder schreibe zeilenweise in eine Textdatei.
also kannst du aus der Aufgabe 7 entnehmen , dass man eine normale serialisierung durchführen kann ?
vielen dank an euch beiden ! @123neu und @Robert Zenz !
Nicht direkt, dort heiszt es nur dass man den Zustand/die Daten wieder laden soll aus den Text-Dateien, was fuer mich eigentlich bedeutet dass man das irgendwie serialisiert. Der Unterschied den ich hier empfinde ist das beim serialisieren der Zustand so wie er ist irgendwo hingeschrieben und wieder geladen wird. Er existiert nur einmal, entweder zur Laufzeit oder abgelegt. Wenn du jetzt stattdessen zum Beispiel eine Datenbank hast, dann hast du eine Datenbank als primaeren Zustand...falls du mir folgen kannst.
Was du jetzt unter "normal" verstehst weisz ich nicht, da steht halt nur "in Datei schreiben und wieder lesen"...wobei, jetzt wo ich die Anforderung ganz lese steht ja dort "Text-Datei", aber ohne ein definiertes Format ist die Aussage auch wieder wertfrei. Also wahrscheinlich wird die "normale" Serialisierung hier nicht anzuwenden sein, weil diese die Instanzen binaer ablegt.