Avatar billede philip-1988 Nybegynder
20. september 2005 - 10:18 Der er 8 kommentarer og
1 løsning

Lave filer i java.

Jeg er igang med at lave et lille program i java til at holde styr på mine film. Programmet skal både indeholde informaioner om mine dvd film og mine vhs film. Disse informationer bliver gemt i en arraylist, her ment at informationerne om mine dvd film bliver gemt i en arraylist for sig og mine vhs film bliver gemt i en arraylist for sig. Disse arraylists vil jeg gerne kunne gemme i en fil. Nogen der kan give mig en smule hjælp til hvordan klassen som skal gemme disse informationer, skal se ud?
Avatar billede mikkelbm Nybegynder
20. september 2005 - 11:17 #1
Avatar billede mikkelbm Nybegynder
20. september 2005 - 11:20 #2
Husk blot at de klasser der skal gemmes, skal implementere Serializable

...

public class MyVideo implements Serializable
{
  //....
}
Avatar billede mikkelbm Nybegynder
20. september 2005 - 11:21 #3
Et alternativ, til at serialisere, er at gemme det i xml. Dog bliver dette lidt mere komplekst.
Avatar billede arne_v Ekspert
20. september 2005 - 12:57 #4
kun hvis man håndkoder XML ikke hvis man bruger XmlEncode/XmlDecode

bemærk at serialisering og de 2 klasser har en lidt forskellig semantik
da de 2 klasser bruger bean konventionen

eksempel:

import java.util.*;
import java.beans.*;
import java.io.*;

public class SerTest implements Serializable {
    public int a;
    private int b;
    private transient int c;
    private HashMap hm1;
    private HashMap hm2;
    public SerTest() {
        a = 0;
        b = 0;
        c = 0;
        hm1 = new HashMap();
        hm2 = new HashMap();
    }
    public SerTest(int a, int b, int c, String v) {
        this.a = a;
        this.b = b;
        this.c = c;
        hm1 = new HashMap();
        hm2 = new HashMap();
        hm1.put("k1", v);
        hm2.put("k2", v);
    }
    public int getB() {
        return b;
    }
    public int getC() {
        return c;
    }
    public HashMap getHm1() {
        return hm1;
    }
    public void setB(int b) {
        this.b = b;
    }
    public void setC(int c) {
        this.c = c;
    }
    public void setHm1(HashMap hm1) {
        this.hm1 = hm1;
    }
    public String toString() {
        return (a + " " + b + " " + c + " " + hm1 + " " + hm2);
    }
    public static void main(String[] args) throws Exception {
        SerTest st1 = new SerTest(1, 2, 3, "V");
        XMLEncoder xe = new XMLEncoder(new FileOutputStream("C:\\xml.dat"));
        xe.writeObject(st1);
        xe.close();
        XMLDecoder xd = new XMLDecoder(new FileInputStream("C:\\xml.dat"));
        SerTest st2 = (SerTest)xd.readObject();
        System.out.println(st1 + " -> " + st2);
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\bin.dat"));
        oos.writeObject(st1);
        oos.close();
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\bin.dat"));
        SerTest st3 = (SerTest)ois.readObject();
        System.out.println(st1 + " -> " + st3);
    }
}
Avatar billede arne_v Ekspert
20. september 2005 - 12:58 #5
(kør det og studer resultatet)
Avatar billede mikkelbm Nybegynder
20. september 2005 - 14:10 #6
Ja, det var da egentlig nemt.

(nu får jeg heller ikke mails på spg jeg deltager i!?)
Avatar billede philip-1988 Nybegynder
20. september 2005 - 17:10 #7
arne_v, jeg siger mange tak. Hvis du kan lægge et svar så du kan få dine points. :-)
Avatar billede arne_v Ekspert
20. september 2005 - 17:38 #8
ok
Avatar billede arne_v Ekspert
20. september 2005 - 17:39 #9
(mikkelbm's link har også kode til serialisering)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester