Hallo ich habe einen Kalender inkl. Jahresplan programmiert und würde gerne die Ausgaben als .txt Datei speichern lassen.
Bislang lasse ich mir die einzelnen Monatsblätter vom typ String mit folgender Methode speichern:
Das funktioniert auch soweit, nur leider erfolgt das einlesen dadurch nicht Zeilenweise.
Mein Kalender beinhaltet des Weiteren einen Jahresplaner. Dieser liefert eine Ausgabe als LinkedList welche ich über diese Methode speichere und auch korrekt so abgebildet wird:
Hat jemand eventuell einen Tipp wie es meine speichern() Methode ändern kann, dass auch diese Zeilenweise speichert ?
Zudem habe ich ein Problem damit den Jahreskalender zu speichern, da es sich bei der Ausgabe dessen um eine void Methode handelt. Mir wird vorgeschlagen eine Methode speichern3(String, Object) zu erstellen, was ich auch getan habe:
Leider funktioniert es damit nicht und mir wird weiterhin vorgeschlagen eine Methode mit (String, Object) zu erstellen.
Der Aufruf erfolgt so:
Es soll diese Methode abgebildet werden:
Bislang lasse ich mir die einzelnen Monatsblätter vom typ String mit folgender Methode speichern:
Java:
public static void speichern(String dateiname, String object) throws IOException {
BufferedWriter lesegeraet = null;
try {
lesegeraet = new BufferedWriter(new FileWriter(dateiname));
lesegeraet.write(object+"\n");
lesegeraet.newLine();
lesegeraet.close();
} catch (IOException e) {
e.printStackTrace();
}
}// end of methode
Mein Kalender beinhaltet des Weiteren einen Jahresplaner. Dieser liefert eine Ausgabe als LinkedList welche ich über diese Methode speichere und auch korrekt so abgebildet wird:
Java:
public static void speichern2(String dateiname, LinkedList<String> liste) throws IOException {
File datei = new File( dateiname);
BufferedWriter out = null;
// Stream �ffnen
try {
out = new BufferedWriter ( new FileWriter(datei));
} catch (IOException e) {
System.out.println("Fehler Datei= "+ dateiname +" konnte nicht ge�ffnet werden");
e.printStackTrace();
}
// Stream schreiben
String zeile = null;
// Liste durchlaufen, damit Zeile f�r Zeile geschrieben werden kann
Iterator<String> it = liste.iterator();
while( it.hasNext() ){
zeile = it.next(); // Zeile aus der Liste entnehmen
try {
out.write(zeile); // schreiben der Zeile
out.newLine(); // nicht vergessen! Newline (NL) schreiben
// out.write("\n");
} catch (IOException e) {
System.out.println("Fehler Datei= "+ dateiname +" konnte nicht geschrieben werden");
e.printStackTrace();
}
}
// Stream schlie�en
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}// end of methode
Hat jemand eventuell einen Tipp wie es meine speichern() Methode ändern kann, dass auch diese Zeilenweise speichert ?
Zudem habe ich ein Problem damit den Jahreskalender zu speichern, da es sich bei der Ausgabe dessen um eine void Methode handelt. Mir wird vorgeschlagen eine Methode speichern3(String, Object) zu erstellen, was ich auch getan habe:
Java:
public static void speichern3(String dateiname, Object object) throws IOException {
// Stream schlie�en
try {
FileWriter lesegeraet = new FileWriter(dateiname);
lesegeraet.write((int) object);
lesegeraet.close();
} catch (IOException e) {
e.printStackTrace();
}
}// end of methode
Leider funktioniert es damit nicht und mir wird weiterhin vorgeschlagen eine Methode mit (String, Object) zu erstellen.
Der Aufruf erfolgt so:
Java:
case 3:{
showHolidays = true;
int jahr = this.liesJahr();
setHollidays(jahr);
this.wochen = liesKopfzeile();
this.zeigeJahr(jahr);
/Ausgabe.outSpeichern();
if (Eingabe.inSpeichern() == 1) {
Ausgabe.outSelbstNameWaehlen();
if (Eingabe.inSpeichern() == 1) {
Ausgabe.outDateinameWaehlen();
dateiname = Eingabe.dateinameWaehlen() + ".txt";
}
else {
dateiname = jahr + "_" + "Jahresplan" + ".txt";
}
try {
Speichern.speichern3(dateiname, this.zeigeJahr(jahr));
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
Es soll diese Methode abgebildet werden:
Java:
@Override
public void zeigeMonat(int jahr, int monat) {
Ausgabe.outStringausgabe(getMonatsblatt(jahr, monat));
}
@Override
public void zeigeJahr(int jahr) {
for (int i = 1; i <= 12; i++) {
zeigeMonat(jahr, i);
}
}