Hallo liebe Forum-User.
Ich bin gerade dabei ein Programm zu schreiben und komme bei einer Sache leider nicht weiter. Ich habe vor eine Arraylist in eine Datei zu schreiben und wieder auszulesen. Ich weiß, hier im Forum sind genug Leute, die diese Frage schonmal gestellt haben, aber ich steig da immer noch nicht durch, hab mich wirklich bemüht, das zu verstehen. Zumindest hab ich es schonmal geschafft, dass eine Datei erstellt wird (.txt). Diese enthält jedoch nicht die gewünschten Daten (meines Erachtens sind das Exceptions). Ich hoffe ihr könnt mir dabei weiterhelfen, würde mich jedenfalls sehr freuen. Hier mein Code:
Die Klasse Werte sieht folgendermaßen aus:
Würde mich über eine schnelle Hilfe freuen.
MfG Patrick
Ich bin gerade dabei ein Programm zu schreiben und komme bei einer Sache leider nicht weiter. Ich habe vor eine Arraylist in eine Datei zu schreiben und wieder auszulesen. Ich weiß, hier im Forum sind genug Leute, die diese Frage schonmal gestellt haben, aber ich steig da immer noch nicht durch, hab mich wirklich bemüht, das zu verstehen. Zumindest hab ich es schonmal geschafft, dass eine Datei erstellt wird (.txt). Diese enthält jedoch nicht die gewünschten Daten (meines Erachtens sind das Exceptions). Ich hoffe ihr könnt mir dabei weiterhelfen, würde mich jedenfalls sehr freuen. Hier mein Code:
Code:
package shared;
import java.util.ArrayList;
import java.io.*;
public class Datensatz{
private ArrayList werteliste;
public Datensatz() {
// neue Werteliste mit zunaechst 10 Eintraegen anlegen
werteliste = new ArrayList();
}
/**
* Eine Referenz auf eine Instanz vom Typ Wert wird in den Datensatz aufgenommen.
*
* @param neuerWert Wert
*/
public void ergaenzeWert(Wert neuerWert) {
werteliste.add(neuerWert);
}
/**
* Liefert den Wert TRUE, falls keine Werte im Datensatz abgelegt sind,
* sonst FALSE.
*
* @return boolean
*/
public boolean datensatzLeer() {
return werteliste.isEmpty();
}
/**
* Es werden alle Referenzen auf die Instanzen vom Typ Wert im Datensatz
* geloescht.
*/
public void loescheAlleWerte() {
werteliste.clear();
}
/**
* Ein bestimmter Wert wird aus dem Datensatz gelöscht.
* @param listenNummer int
*/
public void entferneWert(int listenNummer) {
werteliste.remove(listenNummer);
}
/**
* Liefert die aktuelle Anzahl der Elemente im Datensatz.
*
* @return int
*/
public int werteImDatensatz() {
return werteliste.size();
}
/**
* Gibt TRUE zurueck, falls bereits eine Referenz auf die Wert-Instanz in der
* Liste ist, sonst FALSE.
*
* @param pruefWert Wert
* @return boolean
*/
public boolean enthaeltWert(Wert pruefWert) {
return werteliste.contains(pruefWert);
}
/**
* Liefert die Referenz auf das Listenobjekt Wert an der Stelle listenNummer.
* Beachte: Die Nummerierung der Listenelemente beginnt bei 0,
* wie bei einem Array.
*
* @param listenNummer int
* @return Wert
*/
public Wert gibStelle(int listenNummer) {
return (Wert) werteliste.get(listenNummer);
}
/**
* toString-Methode
*
* Liefert Eintragsliste mit Nummer und toString-Ausgabe des darin ab-
* gelegten Elements.
*
* @return String
*/
public String toString() {
// falls keine Daten im Datensatz sind
if (datensatzLeer()) {
return "Der Datensatz ist leer.";
}
// ab jetzt enthaelt der Datensatz mindestens einen Eintrag
String rueckgabe = "";
for (int i = 0; i < werteImDatensatz(); i++) {
// Eintragsnummer+1, Eintrag.toString(), neue Zeile
rueckgabe = rueckgabe + "Eintrag " + (i + 1) + ": " +
gibStelle(i).toString() + "\n";
}
return rueckgabe;
}
/**
* leseAbundanz
*
* Liefert ein Feld, welches als Einträge die Abundanzen enthält.
*
* return int[]
*/
public int[] leseAbundanz()throws LeerException{
if(datensatzLeer()){
throw new LeerException();
}else{
int[] feld=new int[werteImDatensatz()];
for (int k = 0; k < werteImDatensatz(); k++) {
Wert abund = gibStelle(k);
feld[k] = abund.leseAbundanz();
}
return feld;
}
}
public String[] leseArtname(){
String[] feld=new String[werteImDatensatz()];
for (int k = 0; k < werteImDatensatz(); k++) {
Wert name = gibStelle(k);
feld[k] = name.leseArtname();
}
return feld;
}
public void schreiben(String pfad) {
try{
FileOutputStream fos = new FileOutputStream(pfad);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this);
oos.flush();
fos.close();
} catch(Exception e) {
}
}
public Datensatz lesen(String pfad) {
Datensatz daten = new Datensatz();
try{
FileInputStream fis = new FileInputStream(pfad);
ObjectInputStream ois = new ObjectInputStream(fis);
daten = (Datensatz) ois.readObject();
fis.close();
}
catch(Exception e){}
return daten;
}
}
Die Klasse Werte sieht folgendermaßen aus:
Code:
package shared;
public class Wert {
private String artname = "";
private int abundanz = 0;
/**
* Konstruktor ohne Formalparameter
*/
public Wert() {
}
/**
* Konstruktor mit Name und Abundanz als Formalparameter
*
* @param artname String
* @param abundanz int
*/
public Wert(String artname, int abundanz) {
this.artname = artname;
this.abundanz = abundanz;
}
/**
* Seite den Name der Instaz
*
* @param artname String
*/
public void setzeArtname(String artname) {
this.artname = artname;
}
/**
* Setze die Abundanz der Instanz
*
* @param abundanz int
*/
public void setzeAbundanz(int abundanz) {
this.abundanz = abundanz;
}
/**
* Gibt den Namen der Instanz zurŸck
*
* @return String
*/
public String leseArtname() {
return this.artname;
}
/**
* Gibt die Abundanz der Instanz zurŸck
*
* @return int
*/
public int leseAbundanz() {
return this.abundanz;
}
/**
* Liefert einen String fŸr die Instanz
*
* @return String
*/
public String toString() {
return "Artenname: " + this.artname + ", Abundanz: " + this.abundanz;
}
}
Würde mich über eine schnelle Hilfe freuen.
MfG Patrick