/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Gemme array med objekter i en fil ?
Fra : Simon...


Dato : 11-05-02 17:31

Hejsa,

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)

Tak

mvh.Simon



 
 
Filip Larsen (11-05-2002)
Kommentar
Fra : Filip Larsen


Dato : 11-05-02 19:43

Simon skrev

> er der ikke en af jer der har et eksempel på hvordan jeg kan gemme et
array
> med objekter i en fil ?

Du kan fx. bruge objekt-serialisering. Læs mere på
http://java.sun.com/j2se/1.4/docs/guide/serialization/index.html


Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Jan Oksfeldt Jonasen (11-05-2002)
Kommentar
Fra : Jan Oksfeldt Jonasen


Dato : 11-05-02 19:53

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.

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste