Avatar billede skolhedkaffe Nybegynder
08. februar 2006 - 19:45 Der er 19 kommentarer og
2 løsninger

gemme data i fil

Jeg sidder med mit eget projekt i java hvor jeg har brug for at kunne gemme nogle data i en fil. Disse data omhandler en liste af min dvd samling. Her har jeg valgt at have forskellige ting om en bestemt film i et objekt med forskellige instans variabler. F.eks. String til navn, double for længenden af filmen ovs. Da der er mere end en film vil disse objekter af denne klasse blive gemt i en ArrayList. Nogen der ved hvordan jeg kan gemme denne ArrayList eller de data som er i denne ArrayList i en fil på harddisken?
Avatar billede mikkelbm Nybegynder
08. februar 2006 - 19:49 #1
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dinArrayList);
oos.close();

Burde kunne gøre det.
Avatar billede mikkelbm Nybegynder
08. februar 2006 - 19:50 #2
Du skal dog huske at dine objekter skal implementere Serializable interfacet.
Avatar billede mikkelbm Nybegynder
08. februar 2006 - 19:51 #3
Avatar billede mikkelbm Nybegynder
08. februar 2006 - 19:53 #4
Avatar billede mikkelbm Nybegynder
08. februar 2006 - 19:53 #5
Og et svar.
Avatar billede mwl Nybegynder
08. februar 2006 - 21:15 #6
Jeg vil nu nok også anbefale dig at kigge på xml. Der er et par artikler om emnet her på exp.dk
Avatar billede arne_v Ekspert
08. februar 2006 - 21:15 #7
overvej evt. XML serialisering eller noget custom XML

binaer serialisering er glimrende til transport mellem systemer over
nettet

til langtids opbevaring paa disk er der en vis risiko i forbindelse med
at man laver aendringer i sin klasse for at man ikke lanegere kan laese de gemte
data


det kan ogsaa ske med XML, men man kan konvertere XML, mens et serialiseret
java objekt for en klasse man ikke har er en haard noed
Avatar billede mikkelbm Nybegynder
08. februar 2006 - 21:22 #8
Ja, jeg vil også anbefale at bruge xml eller database til at opbevare data i.

En lille tommelfinger-regel min gamle lærer gav mig engang:
"Skal dine data gemmes i mere end 1-2 uger, så undgå at serializere dine objekter råt ned i en fil" :)
Avatar billede skolhedkaffe Nybegynder
09. februar 2006 - 09:54 #9
Jeg må indrømme jeg har haft svært at skrive en klasse som kan gemme en fil. Er det muligt i kan lave et link til nyheden eller et link til et andet sted hvor jeg kan læse mere ditaljeret om at programmere en klasse til gemning af filer samt åbning?
Avatar billede mwl Nybegynder
09. februar 2006 - 10:00 #10
Martin Fowlers Datamapper er glimrende ;)
Men mindre kan også gøre det. Arne har skrevet en udmærket artikel om det er http://www.eksperten.dk/artikler/245
Avatar billede mikkelbm Nybegynder
09. februar 2006 - 12:21 #11
Det kommer jo an på hvad dine behov er. Vil du bare gemme noget for at teste det, eller vil du gemme i xml, eller måske database?

Og hvor meget Java kan du? Hvis du er helt nybegynder er det måske voldsomt at gå igang med og forstå datamappere/persistenceframeworks.
Avatar billede arne_v Ekspert
09. februar 2006 - 13:36 #12
jeg har et serialiserings 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 skolhedkaffe Nybegynder
09. februar 2006 - 17:12 #13
mwl kan du ikke ligge et svar? Det hjalp mig meget.
Jeg vil lige høre måde mikkelbm og mwl, hvordan skal pointsende deles ud?
Avatar billede mwl Nybegynder
09. februar 2006 - 21:13 #14
Giv du hellere pointene til Arne. Det er trodsalt ham der har skrevet artiklen :)
Avatar billede mikkelbm Nybegynder
09. februar 2006 - 21:38 #15
Du fordeler pointene som du synes. Den du mener har givet svar på det du spurgte om, beder du om at lægge et svar - og accepterer det. Hvis du vil fordele pointene kan du markere flere af dem der har lagt et svar og acceptere det - eller vælge avanceret hvis du selv vil kunne fordele points mellem de forskellige svar.
Avatar billede mikkelbm Nybegynder
09. februar 2006 - 21:42 #16
Og bemærk (nu kan jeg se du er ny her) at du kun kan give point til dem der har lagt et 'svar' og ikke kun har lagt en 'kommentar'. Hvis Arne f.eks. skal ha' point beder du ham om at smide et svar og acceptere hans svar.
Avatar billede skolhedkaffe Nybegynder
11. februar 2006 - 15:28 #17
mwl og arne kan i ikke ligge et svar begge to. Med mindre mwl at du ser at arne bare skal have points'ende. :-)
Avatar billede arne_v Ekspert
11. februar 2006 - 16:04 #18
.
Avatar billede mwl Nybegynder
11. februar 2006 - 18:50 #19
Jo da :)
Avatar billede mikkelbm Nybegynder
11. februar 2006 - 20:05 #20
Af ren nysgerrighed; hvad endte du så op med at gøre?
Avatar billede arne_v Ekspert
11. februar 2006 - 23:41 #21
ja og var det med vilje - at mikkel ikke fik point ?

(object stream virker jo ogsaa)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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