Simon... <devnull@linux.org> wrote:
> er der ikke en af jer der har et eksempel på hvordan jeg kan gemme et array
> med objekter i en fil ? det tætteste jeg er kommet er at gemme nogle ord i
> en fil, der for øvrigt blev overskrevet hver gang jeg startede programmet :/
>
> (der må gerne emails programmer på: simons[at]pc.dk)
>
For at objekter kan skrives til en stroem, skal klassen implementere
java.io.Serializable eller en nedarvning heraf. I eksemplet nedenfor
sker dette. For ikke at overskrive output filen hver gang skal du f.eks.
bruge den FileOutputStream konstruktoer, hvis signatur er:
public FileOutputStream(String name, boolean append) throws
FileNotFoundException
public class KlasseSomSkalSkrives implements java.io.Serializable
{
private Object etObject = new Object();
}
Et andet sted vil du f.eks. have en metode:
public void skriveObject(KlasseSomSkalSkrives ks) throws Exception
{
ObjectOutputStream ostream = new ObjectOutputStream(
new FileOutputStream("filnavn",true));
//ks implementere Serializable og kan derfor skrives direkte
ostream.writeObject(ks);
ostream.close();
}
Havde ks istedet vaeret et array, skulle du blot skrive objekterne
stykvis.
Det var den nemme del
Ting at vaere opmaerksom paa er bl.a. at
aendre du blot en lille ting i de interne data i KlasseSomSkalSkrives,
saa kan denne ikke indaeses fra filen igen, da serialiseringen foretages
ret omstaendigt bl.a. paa basis af instans variabler, metoder og andet.
Sun har mange steder i deres API noter om, at du ikke kan forvente
kompabilitet mellem versioner af java og serialiserede objekter. Du
skriver ikke hvad det er for en type objekter, du vil gemme, men for
alle tilfaeldes skyld burde du kigge paa det hav af in- og output
streams, som findes til forskellige formaal.
Noget andet der bestemt er vaerd at overveje er slet ikke at bruge
serialisering, men istedet gemme dine data i et af dig defineret format.
XML ville her vaere et klogt valg, eller blot noget du opfinder fra fri
fantasi.
--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk
If I wanted culture, I'd eat yogurt. Ikke kun Tuborg har noget i gære.