Auf Thema antworten

Es würde dich gern interessieren? Hm, das Motto hier ist doch: "Java programmieren aus Leidenschaft" --> Leidenschaft, ist, was Leiden schafft --> google ^^


Du brauchst drei Komponenten:


1 Eine Methode, die die Vokabel-Informationen zu einem String bastelt und die Separatoren einfügt und diesen in eine Datei schreibt

2. Eine Methode, die die Datei wieder ausliest und die Vokabeln initiiert.

3. Eine Klasse, die die Daten zur Laufzeit hält.


Fang bei Punkt 3 an:

Du brauchst also eine Art Vokabular. Dies kannst du als HashMap realisieren und diese einfach serialisieren. Weil dein Vokabular jedoch wahrscheinlich mehr Funktionen bereit stellen soll als eine stinknormale HashMap, solltest du eine eigene Klasse Vokabular implementieren, die Funktionen wie löschen, bearbeiten usw. bereitstellen und auch einen eigenen, editierbaren Namen als Attribut führen kann. Diese Klasse könnte dann ein Array von Vokabel-Objekten beinhalten und die Methode, die  den "Datenstring" zum Speichern erzeugt makeDataString(): Diese könnte so aussehen (wobei vokabular das Vokabel-Array ist und "$" als separator zwischen den Vokabeln und ":" der zwischen den zwei Bedeutungen der einzelnen Vokabeln ist und ich voraussetze, dass die Klasse Vokabular die Methoden getName1() und ~2() hat):


[code=Java]

public String makeDataString(){

   if(vokabular!=null && vokabular.length>0){ // bei && wird zweite Bedingung nur durchgeführt, wenn erste true -->vermeidung von NullPointerException, wenn vokabular==null

      StringBuffer sb = new StringBuffer();

      for(int i=0;i<vokabular.length;i++){

         sb.append(vokabular[i].getName1() + ":" + vokabular[i].getName2() );

         if(i<vokabular.length-1)sb.append("$"); //würde $ zuletzt stehen, würde split("$") ein Array mit null als letzten Wert liefern

      }

      return sb.toString();

   }

   else return null;

}

[/code]


Nun sollen die Daten in eine Datei geschrieben...


[code=Java]

String dataString = vocabularKlasse.makeDataString();

if(dataString!=null){

   try{

      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("beispielname.voc"),"UTF-8"));

      writer.write(dataString);

      writer.close();

   }

   catch(IOException e){

      e.printStackTrace();

   }

}

[/code]


...und auch wieder ausgelesen werden:


[code=Java]

String loads = "";

File f = new File("beispielname.voc");

try{

   BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f),"UTF-8"));

   String line = null;

   while((line = reader.readLine()) != null){

      loads=loads+line;

   }

   reader.close();

}

catch(IOException e){

   e.printStackTrace();

}

[/code]


loads musst du nun mittels String.split(String separator) aufdröseln und die Vokabeln wieder initialiseren.



Oben