Avatar billede saje Nybegynder
30. november 2003 - 11:32 Der er 12 kommentarer og
1 løsning

array - gemmes som fil.

Jeg er ved at lægge mine Bogobjekter ind i et array, og kan ikke huske hvordan man forhindre overskrivning. Desuden mener jeg at der er en metode der ser om der er et objekt på den pågældende plads i array'et..
Et andet problem er at jeg skal gemme arrayet på en fil, således mine data ikke bliver tabt, hver gang jeg lukker computeren..Kan man gøre dette på en nem måde??
Er der nogen der kan hjælpe mig med mine to problemer??
Avatar billede arne_v Ekspert
30. november 2003 - 13:26 #1
Du kan vel starte med at sætte alle elementer til null og teste
for det.

Selvfølgelig kan du gemme til fil. Spørgsmålet er om du vil gemme som
plan text, XML eller binært.
Avatar billede saje Nybegynder
30. november 2003 - 13:52 #2
jeg vil gemme som txt
Avatar billede arne_v Ekspert
30. november 2003 - 13:57 #3
Lige ud af landevejen med FileOutputStream og PrintStream og print til at
skrive med.

Og FileInputStream og InputStrreamReader og BufferdedReader og readLine
og Xxxx.parseXxxx til at læse med.
Avatar billede saje Nybegynder
30. november 2003 - 14:14 #4
hvad med metoden til at se om der er et objekt på den pågældende pladsen i arrayet??
Avatar billede arne_v Ekspert
30. november 2003 - 14:16 #5
Start med at sætte elle elementer til null.

Så kan du bare teste på om et element er null.
Avatar billede saje Nybegynder
30. november 2003 - 14:30 #6
Jeg har ikke helt forstået det med at gemme som txt.
jeg har oprettet et array med objekter, men kan ikke gemme dette array i en fil. Hvordan gemmer man et array som en fil? og da jeg er nybegynder i programmering, så må du meget gerne uddybe dine svar.
Avatar billede arne_v Ekspert
30. november 2003 - 14:34 #7
Du laver f.eks. en for løkke som løber arrayet igennem og for alle
ikke null elementer skriver objektets attributter ud i en linie.
Avatar billede arne_v Ekspert
30. november 2003 - 14:35 #8
Skal jeg lave et eksempel ?
Avatar billede saje Nybegynder
30. november 2003 - 14:36 #9
Problemet for mig er at man skal kunne hente objektet igen og redigere i det..
Avatar billede arne_v Ekspert
30. november 2003 - 14:38 #10
Ja - når du skal læse ind igen, så læser du linierne ind og opretter
objekter udfra data.
Avatar billede saje Nybegynder
30. november 2003 - 14:42 #11
hvorfor kan jeg ikke give dig point??
Avatar billede arne_v Ekspert
30. november 2003 - 14:44 #12
Jeg skal ligge et svar !
Avatar billede arne_v Ekspert
30. november 2003 - 14:50 #13
Her er et eksempel. Et meget primitivt eksempel. Men det viser ligesom
lidt:

import java.io.*;

public class OutAndInAgain {
    public static void main(String[] args) throws Exception {
        Data[] x1 = new Data[4];
        for(int i = 0; i < x1.length; i++) {
            x1[i] = null;
        }
        x1[0] = new Data(1, "a");
        x1[1] = new Data(2, "bb");
        x1[2] = new Data(3, "ccc");
        PrintStream ps = new PrintStream(new FileOutputStream("C:\\test.txt"));
        for(int i = 0; i < x1.length; i++) {
            if(x1[i] != null) {
                ps.println(x1[i].getA() + " " + x1[i].getB());
            }
        }
        ps.close();
        Data[] x2 = new Data[4];
        for(int i = 0; i < x2.length; i++) {
            x2[i] = null;
        }
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\test.txt")));
        String line;
        int ix = 0;
        while((line = br.readLine()) != null) {
            x2[ix] = new Data(Integer.parseInt(line.substring(0,1)), line.substring(1).trim());
            ix++;
        }
        br.close();
        for(int i = 0; i < x2.length; i++) {
            if(x2[i] != null) {
                System.out.println(x2[i].getA() + " " + x2[i].getB());
            }
        }
    }
}

class Data {
    private int a;
    private String b;
    public Data() {
        a = 0;
        b = "";
    }
    public Data(int a, String b) {
        this.a = a;
        this.b = b;
    }
    public int getA() {
        return a;
    }
    public String getB() {
        return b;
    }
    public void setA(int a) {
        this.a = a;
    }
    public void setB(String b) {
        this.b = b;
    }

}
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