20. februar 2005 - 23:57Der er
12 kommentarer og 1 løsning
Gem til fil
Hej alle derude...
Hvad er der galt her...min "data.dat" fil gemmer en lille sjat (6 kb), men langtfra nok. Mine ArrayLists bliver ikke gemt. Jeg kan ihvertfald ikke kalde dem frem igen.
public Kontrol(GUI gui) { this.gui = gui;
try { FileInputStream fis = new FileInputStream("data.dat"); ObjectInputStream ois = new ObjectInputStream(fis); dataList = (DataList)ois.readObject(); ois.close();
}catch(Exception e) { dataList = new DataList(this); } armorList = new ArmorList(); weaponList = new WeaponList(); }
public void gem() { try{ FileOutputStream fos = new FileOutputStream("data.dat"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(dataList); oos.close();
}catch(Exception e) {
}
Min DataList klasse er som følgende;
public class DataList implements Serializable { CharacterList characterList; Kontrol control;
public DataList(Kontrol control) { this.control = control; characterList = new CharacterList(this); } public CharacterList getCharacterList() { return characterList; } }
Min CharacterList klasse instantiere en række nye ArrayLists, hvor disses (PersonKlasser) alle implementere Serielizable
Beklager kalp ..det var ikke det, der var grunden... men jeg har dog rettet det...
Jeg mener dog, at man kun behøver at implementere Serializable i den først komne klasse. Resten af klasserne bliver automatisk serieliseret...jeg har bare skrevet det for en sikkerheds skyld...
og til snoop one...min CharacterList er serialiseret
Du skal implementere det i alle dine klasser du selv har lavet som skal gemmes.
Måske er det du tænker på ArrayList klassen og mange andre fra API'et.. dem behøver du ikke skrive det ved for de er allerede sat op til at kunne gemmes på disk:)
Men du har jo en java bog.. slå det op:) selvfølgelig har jeg ret;)
som jeg sagde.. overvej hvornår du kalder din gem() metode... kald den når alt er oprettet! Og ellers skal alle dine klasser/objekter der skal gemmes på disk implementere serializable.
Hvis det stadig ikke hjælper så tror jeg det fordi der går nogen objekter tabt her
characterList = new CharacterList(this);
du siger selv den skal oprette en serie arraylists... sikker på de bliver gemt?
Ja...så længe jeg ikke lukker ned for programmet, så virker det fint med at hente ting oprettet i forskellige Arrays...
Jeg har nu implementeret Serializable i samtlige 21 klasser undtagen main() klassen. Der virker, så der er vel bare én vej, hvilket er at fjerne det igen én efter én...
Ja... men ALLE de objekter/klasser som du vil have skal gemmes skal implementere serializable.. (dem du laver altså) hvis du anvender java's klasser skal du lige kigge i api'et om de implementere serializable hvis ja så behøver du ikke skrive det også
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.