Guten Tag Leute, 
und zwar habe ich folgendes Problem.
Ich soll einen Kalender programmieren, bei dem man in einem TerminArray jeweils für einen Termin ein Datum,Name,Beschreibung etc eingeben kann. Das hab ich alles locker hinbekommen.
Aber nun sollen wir das Array bzw die Termine persistens abspeichern und wenn man Eclipse schließt und neustartet, sollen diese Termine auch wieder da sein und mein Array mit diesen Terminen gefüllt sein.
Wie mache ich das ???? hier mein Code.
	
	
	
	
	
		
	
	
	
	
	
	
		
	
	
	
	
	
	
		
	
Vielen Dank schon mal vorab =)=)
			
			und zwar habe ich folgendes Problem.
Ich soll einen Kalender programmieren, bei dem man in einem TerminArray jeweils für einen Termin ein Datum,Name,Beschreibung etc eingeben kann. Das hab ich alles locker hinbekommen.
Aber nun sollen wir das Array bzw die Termine persistens abspeichern und wenn man Eclipse schließt und neustartet, sollen diese Termine auch wieder da sein und mein Array mit diesen Terminen gefüllt sein.
Wie mache ich das ???? hier mein Code.
		Java:
	
	package Testat;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.io.FileNotFoundException; //Testat Lukas Oppelt
import java.io.Serializable;
import java.util.Scanner;
public class TerminKalender implements Serializable {
	public static void main(String[] args) throws IOException {
		
//		FileWriter fw = new FileWriter("data.txt");
//		BufferedWriter ausgabe = new BufferedWriter(fw);
//		new EinLesen();
		
		int anzahlTermine = 3;
		Termin arraylist[] = new Termin[anzahlTermine]; // Initialisierung von
		boolean ProgrammLaeuft = true;
		String s = null;
		Scanner sc1 = new Scanner(System.in);			// Array, Schleifen,
														// Scanner
	while (ProgrammLaeuft) {
			new TextMenue(); // textmenü methode wird aufgerufen
			s = sc1.next();
			if (s.equals("n")) 
			{
				new NeuenTerminErstellen(arraylist, s, sc1, ausgabe);
			}
			else if (s.equals("l")) 
			{
				for (int j = 0; j < anzahlTermine; j++) 
				{
					System.out.print("\nTermin " + j + ":\n ");   // Liste aller Termine wird angezeigt
					System.out.println(arraylist[j]);
				}															 
			}
			else if (s.equals("b")) 
			{
				new TerminBearbeiten(arraylist, sc1, ausgabe);
			}
			
			else if (s.equals("a"))
			{
				ProgrammLaeuft = false; // Der vorgang wird beendet bzw die
										// Schleife abgebrochen    // wenn A gedrückt wird
				System.out.println("-----------------------------------------------------------");
				System.out.println("\nDer Vorgang wurde beendet.");
				System.out.println("Starten Sie das Programm neu, um weiter arbeiten zu können.");
				ausgabe.flush();
				ausgabe.close();
			}
			else if (s.equals("d")) 
			{
				new KWundWochentag(); // Hier lässt sich nochmals separat der
										// Wochentag und die KalenderWoche abfragen
			}
	}
  }
}
		Java:
	
	package Testat;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Scanner;
import java.io.FileWriter;
import java.io.Serializable;
public class NeuenTerminErstellen implements Serializable {
	
    
	public NeuenTerminErstellen (Termin [] arraylist, String s, Scanner sc1, BufferedWriter ausgabe) throws IOException
	{
	
    FileWriter fw = new FileWriter("data.txt");
			 boolean TerminKette = true ;
			 
			 int i = 0; 
			 					//neuer Termin wird erstellt
			while(TerminKette)			//wenn N gedrückt wird
			{	
				System.out.println("Geben Sie eine Nummer für Ihren Termin ein. (0-3)");
				i = sc1.nextInt();
			    arraylist[i]= new Termin();
			    
			    System.out.print("\nTermin "+ i + ":\n ");
			    ausgabe.write("\nTermin "+ i + ":\n ");
			    ausgabe.write(System.getProperty("line.separator"));
			    ausgabe.write(arraylist[i].toString2());
			   
			
			    System.out.println(arraylist[i].toString());    //Ausgabe von der toString1 Methode
			    System.out.println("+--------------------------------------------------------------+");
			    System.out.println("Ihr Termin wurde in der Datei: " + " abgespeichert.");
			    System.out.println("+--------------------------------------------------------------+");
				i++;
				
				
				System.out.println("\n\nWas möchten Sie nun tun?\n");
				System.out.println("Wenn Sie erneut einen Termin eingeben wollen, dann drücken Sie die Taste 'n'.");
				System.out.println("Wenn Sie den Vorgang abbrechen wollen, dann drücken Sie die Taste 'a'.\n");
				
				s = sc1.next();
				
				if(s.equals("n")) 
				 {
				   TerminKette = true;   //Abfrage nachdem man Termin erstellt hat
				 }
				
				else if (s.equals("a")) 
				 {
				   TerminKette = false;
				 }
			}
	 }
}
		Java:
	
	package Testat;
import java.io.Serializable;
import java.util.Scanner;
public class Termin implements Serializable  {
	
	
	String n, b, weekday;
	int anzahlTermine = 5 ;
	Termin arraylist[] = new Termin [anzahlTermine];
int tag,monat,jahr;
	    				//Datum des Termines
	int stunde = 0;
	int minute = 0;     	//Uhrzeit des Termins
	int wochentag;
	int kw ;
	
	
	
public Termin()  {
	
	
		boolean Pruefen = true; // Neuen Termin erstellen
		while (Pruefen) {
			Scanner sc = new Scanner(System.in); // TagesEingabe
			System.out.println("\nBitte geben Sie den Tag Ihres Termines ein.");
			tag = sc.nextInt();
			if (tag > 31 || tag < 1) 
			{
				new Fehlereingabe(Pruefen, b, sc, null);
			}
			else if (tag <= 31 && tag > 0) 
			{
				Pruefen = false;
			}
			Scanner sc1 = new Scanner(System.in); // MonatsEingabe
			System.out.println("Bitte geben Sie den Monat Ihres Termines ein.");
			monat = sc1.nextInt();
			if (monat > 12 || monat < 1) 
			{
				new Fehlereingabe(Pruefen, b, sc1, null);
			}
			
			else if (monat <= 12 && monat > 0) 
			{
				Pruefen = false;
			}
			Scanner sc2 = new Scanner(System.in); // JahresEingabe
			System.out.println("Bitte geben Sie das Jahr Ihres Termines ein.");
			jahr = sc2.nextInt();
			if (jahr > 3000 || jahr < 1000) 
			{
				new Fehlereingabe(Pruefen, b, sc2, null);
			}
			else if (jahr <= 3000 && jahr >= 1000) 
			{
				Pruefen = false;
			}
			Scanner sc3 = new Scanner(System.in); // StundenEingabe
			System.out.println("Bitte geben Sie die Stunde Ihres Termines ein. (00 - 23 Uhr)");
			stunde = sc3.nextInt();
			if (stunde > 23 || stunde < 0)
			{
				new Fehlereingabe(Pruefen, b, sc3, null);
			}
			else if (stunde <= 23 && stunde >= 0) 
			{
				Pruefen = false;
			}
			Scanner sc4 = new Scanner(System.in); // MinutenEingabe
			System.out.println("Bitte geben Sie die Minute Ihres Termines ein. (00 - 59) ");
			minute = sc4.nextInt();
			if (minute > 59 || minute < 0) 
			{
				new Fehlereingabe(Pruefen, b, sc4, null);
			}
			else if (minute <= 59 && minute >= 0) 
			{
				Pruefen = false;
			}
//	} // Ende der while-Schleife /////////////////////////////////////////////
	
	
	  Scanner scr = new Scanner (System.in);
	  System.out.println("\nBitte geben Sie einen Namen für Ihren Termin ein.");
	  n = scr.nextLine();													//Eingabe von Name und 
	  																		//Beschreibung des Termines
	  
	  Scanner scb = new Scanner (System.in);
	  System.out.println("Bitte geben Sie eine Beschreibung für Ihren Termin ein.");
	  b = scb.nextLine();
	  
	  
	 /////////////////////////////////testat 1////////////////////////////////////////////////
	  
	  
	  
	  if  ((tag>31) || (monat>12) || (jahr>=3000 || jahr<1000)) 
		{
	
			System.out.println("Fehler bei Ihrer Eingabe.");			//Ausgabe bei falsches Datumseingabe				
			System.out.println("Bitte neues Datum eingeben!");
	    }
	  else if ((tag<32) && (monat<13) && (jahr<=3000 && jahr>1000))         //Überprüfung ob gültiges Datum eingegeben wurde!
		{															     //Tag < 32  und Monat < 13 und Jahr 
																				//zwischen 1600 und 3000
			
			
		if((jahr % 400 == 0) && (jahr % 100 == 0) || (jahr % 4 == 0))       //Überprüfung ob 
		{																	//Schaltjahr oder nicht	
		
			int monatsziffer = 0;    			// Hier ist es ein Schaltjahr
			
      switch(monat)
      {
      case 1:
      	monatsziffer = 0; break;                //Januar
      case 2:										
      	monatsziffer = 3;break;					//Februar
      case 3:
      	monatsziffer = 3;break;					//Maerz
      case 4:
      	monatsziffer = 6;break;					//April		     //Switch zwischen den 12 Monaten
      case 5:
      	monatsziffer = 1;break;					//Mai
      case 6:
      	monatsziffer = 4;break;					//Juni
      case 7:
      	monatsziffer = 6; break;				//Juli
      case 8:
      	monatsziffer = 2;break;					//August
      case 9:
      	monatsziffer = 5;break;					//September
      case 10:
      	monatsziffer = 0;break;					//Oktober
      case 11:
          monatsziffer = 3;break;					//November
      case 12:
          monatsziffer = 5;break;					//Dezember
      }
      
      
     int aMonatsziffer=monatsziffer;  								//Berechnung Monatsziffer
     //System.out.println("AM "+aMonatsziffer);
      
     int sjahr= 0;  													//keine SchaltjahrKorrektur
     //System.out.println("SJ "+sjahr);
     
	   int tagesziffer = tag%7; 										//Berechnung Tagesziffer
	   //System.out.println("tagesziffer "+tagesziffer);					
	   
	   int jahreszahl = jahr%100; 
	   //System.out.println("JZ "+jahreszahl);
	   int jahresziffer = (jahreszahl+(jahreszahl/4))%7;				//Berechnung Jahresziffer (z.B.xx91)
	   //System.out.println("JZIF "+jahresziffer);
	   
	   int jahrhdt= (int)jahr/100;
	   //System.out.println("JH "+jahrhdt);								//Berechnung Jahrhundertziffer (z.B.19xx)
	   int jahrhundertziffer = (3-(jahrhdt%4))*2; 
	   //System.out.println("JHZIF "+jahrhundertziffer);
	   int wochentag;														
	   wochentag = (tagesziffer+aMonatsziffer+jahresziffer+jahrhundertziffer+sjahr) % 7;
	   						//Alle Werte zusammenrechnen und mit
	   						//Modulo 7 den Wochentag bestimmen
	   int tage = 0;
      switch(monat)
      {
      case 12:
      	tage += 30;
      case 11:
      	tage += 31; 
      case 10:
      	tage += 30; 
      case 9:
      	tage += 31; 
      case 8:
      	tage += 31; 
      case 7:										//Switch zwischen den 12 Monaten
      	tage += 30; 
      case 6:
      	tage += 31;
      case 5:
      	tage += 30; 
      case 4:
      	tage += 31; 
      case 3:
      	tage += 29; 
      case 2:
          tage += 31; 
      case 1:
          tage += tag; 
      }
      
     kw = 0 ;
      
      if (tage % 7 < 3)
       { 							//Berechnungen zur Kalenderwoche
      	 kw = tage/7 ;
       } 
      
      else if(tage%7>3)
        {
           kw = (tage-1)/7+1 ;
        }
     
	      
      
		   switch (wochentag) 
			  {
				case 0:
					weekday ="Sonntag";
					break;
			case 1:
				weekday ="Montag";
					break;
			case 2:
				weekday ="Dienstag";
					 break;															      
				case 3:
					weekday ="Mittwoch";
					break;	
				case 4:
					weekday ="Donnerstag";
					break;
				case 5:
					weekday ="Freitag";
					break;
				case 6:
					weekday ="Samstag";
					break;
				  }
				}
	
		
else 								//else-Funktion wenn kein Schaltjahr
		
	{
		if ((tag>28) && (monat==2))
				
			{
				System.out.println("\nEs ist ein Fehler aufgetreten!");
				System.out.println("Im Jahr "+jahr+" gibt es keinen 29ten Februar, weil es kein Schaltjahr ist.\n");
				System.out.println("Bitte neues Datum eingeben.");
			}
			
		else
				
			{
				
			int monatsziffer = 0;
			
		       switch(monat)
		        {
		        case 1:
		        	monatsziffer = 0; break;                //Januar
		        case 2:										
		        	monatsziffer = 3;break;					//Februar
		        case 3:
		        	monatsziffer = 3;break;					//Maerz
		        case 4:
		        	monatsziffer = 6;break;					//April		     //Switch zwischen den 12 Monaten
		        case 5:
		        	monatsziffer = 1;break;					//Mai
		        case 6:
		        	monatsziffer = 4;break;					//Juni
		        case 7:
		        	monatsziffer = 6; break;				//Juli
		        case 8:
		        	monatsziffer = 2;break;					//August
		        case 9:
		        	monatsziffer = 5;break;					//September
		        case 10:
		        	monatsziffer = 0;break;					//Oktober
		        case 11:
		            monatsziffer = 3;break;					//November
		        case 12:
		            monatsziffer = 5;break;					//Dezember
		        }
		        
	        
	        
		       int aMonatsziffer=monatsziffer;  								//Berechnung Monatsziffer
		       //System.out.println("AM "+aMonatsziffer);
		        
		       int sjahr= 0;  													//keine SchaltjahrKorrektur
		       //System.out.println("SJ "+sjahr);
		       
			   int tagesziffer = tag%7; 										//Berechnung Tagesziffer
			   //System.out.println("tagesziffer "+tagesziffer);					
			   
			   int jahreszahl = jahr%100; 
			   //System.out.println("JZ "+jahreszahl);
			   int jahresziffer = (jahreszahl+(jahreszahl/4))%7;				//Berechnung Jahresziffer (z.B.xx91)
			   //System.out.println("JZIF "+jahresziffer);
			   
			   int jahrhdt= (int)jahr/100;
			   //System.out.println("JH "+jahrhdt);								//Berechnung Jahrhundertziffer (z.B.19xx)
			   int jahrhundertziffer = (3-(jahrhdt%4))*2; 
			   //System.out.println("JHZIF "+jahrhundertziffer);
			   int wochentag;														
			   wochentag = (tagesziffer+aMonatsziffer+jahresziffer+jahrhundertziffer+sjahr) % 7;
			   						//Alle Werte zusammenrechnen und mit
				
														
			int tage = 0;
		        switch(monat)
		        {
		        case 12:
		        	tage += 30;
		        case 11:
		        	tage += 31;
		        case 10:
		        	tage += 30;
		        case 9:
		        	tage += 31;
		        case 8:
		        	tage += 31;
		        case 7:							//Switch zwischen den 12 Monaten
		        	tage += 30;
		        case 6:
		        	tage += 31;
		        case 5:
		        	tage += 30;
		        case 4:
		        	tage += 31;
		        case 3:
		        	tage += 28;
		        case 2:
		            tage += 31;
		        case 1:
		            tage += tag;
		        }
		        
		      kw = 0;
		       
		        if (tage % 7 < 3)
		         { 
		        	kw = tage/7 ;			//Berechnungen zur Kalenderwoche
		         } 
		        
		        else if(tage%7>3)
		          {
		            kw = (tage-1)/7+1 ;
		          }								//Modulo 7 den Wochentag bestimmen
			
		        
				   switch (wochentag) 
					  {
						case 0:
							weekday ="Sonntag";
							break;
					case 1:
						weekday ="Montag";
							break;
					case 2:
						weekday ="Dienstag";
							 break;															      
						case 3:
							weekday ="Mittwoch";
							break;	
						case 4:
							weekday ="Donnerstag";
							break;
						case 5:
							weekday ="Freitag";
							break;
						case 6:
							weekday ="Samstag";
							break;
					 }
				}
      }
   }
  }
}
 
////////////////////////////////////////////////////////
public void TerminBearbeitung()     {
	
	String x;
	Scanner src = new Scanner ( System.in);
	
	
	  System.out.println("\n+---------------------------------------------------------------+");
	  System.out.println("Was genau möchten Sie bearbeiten?");
	  System.out.println("Um den Namen Ihres Termines zu bearbeiten, drücken Sie 'n'");
	  System.out.println("Um das Datum Ihres Termines zu bearbeiten, drücken Sie 'd'");
	  System.out.println("Um die Uhrzeit Ihres Termines zu bearbeiten, drücken Sie 'u'");
	  System.out.println("Um die Beschreibung Ihres Termines zu bearbeiten, drücken Sie 'b'");
	  System.out.println("\n+---------------------------------------------------------------+");
    x = src.next();
    
    if (x.equals("n"))
     	{
    		System.out.println("\nGeben Sie einen neuen Namen für Ihren Termin ein.");
    		this.n = src.next();
     	}
    
    else if (x.equals("d"))
      {
    	System.out.println("\nGeben Sie ein neues Datum für Ihren Termin ein.");
    	
    	System.out.println("\nGeben Sie zunächst einen neuen Tag ein.");
    	this.tag = src.nextInt();
  	
    	System.out.println("\nGeben Sie nun ein neues Monat ein.");
    	this.monat = src.nextInt();
  	
    	System.out.println("\nGeben Sie nun noch ein neues Jahr ein.");
    	this.jahr = src.nextInt();
      }
    
    
    else if (x.equals("u"))
      {
  	     
    	System.out.println("\nGeben Sie eine neue Uhrzeit für Ihren Termin ein.");
    	
    	System.out.println("\nGeben Sie zunächst eine neue Stunde ein.");
    	this.stunde = src.nextInt();
  		    	
    	System.out.println("\nGeben Sie nun einen neuen Wert für die Minuten ein.");
    	this.minute = src.nextInt();
      }
    
    else if (x.equals("b"))
      {
    	System.out.println("\nGeben Sie eine neue Beschreibung für Ihren Termin ein.");
    	this.b = src.next();
      }
      
}
/////////////////////////////////////////////////////////
public String toString()
   {             //Array toString Methode
	 return  "\nName Ihres Termines: " + n + 
			 "\nDatum Ihres Termines: " + String.format("%02d.%02d" ,this.tag ,this.monat) +"." + this.jahr + 
			 "\nUhrzeit Ihres Termines: " + String.format("%02d:%02d" , stunde , minute)  + " Uhr" +
			 "\nBeschreibung Ihres Termines: " + b +  
	 		 "\nKalenderwoche Ihres Termines: " + String.format("%02d" ,this.kw) +
	 		 "\nWochentag Ihres Termines: " + this.weekday +"\n";
   }	
public String toString1()
	{             //Array toString Methode
	 return  "\nName Ihres Termines: " + n + 
			 "\nDatum Ihres Termines: " + String.format("%02d.%02d" ,this.tag ,this.monat) +"." + this.jahr + 
			 "\nUhrzeit Ihres Termines: " + String.format("%02d:%02d" , stunde , minute)  + " Uhr" +
			 "\nBeschreibung Ihres Termines: " + b +"\n" ;  
	 		 
	}
public String toString2()
	{
	return 			"\nName Ihres Termines: " + n + 
					System.getProperty("line.separator") +
					"\nDatum Ihres Termines: " + String.format("%02d.%02d" ,tag ,monat) +"." + this.jahr + 
					System.getProperty("line.separator") +
					"\nUhrzeit Ihres Termines: " + String.format("%02d:%02d" , stunde , minute)  + " Uhr" + 
					System.getProperty("line.separator") +
					"\nBeschreibung Ihres Termines: " + b + 
					System.getProperty("line.separator") ;  
	 }
}Vielen Dank schon mal vorab =)=)
			
				Zuletzt bearbeitet: 
			
		
	
								
								
									
	
								
							
							 
				 
 
		 
 
		 
 
		 
 
		 
 
		