Avatar billede SjollerDk Nybegynder
29. april 2009 - 20:49 Der er 13 kommentarer

Gør Array persistent

Hejsa. Havde en lille opgave på studiet idag, men nåede ikke at blive færdig, og ser først min underviser på mandag igen, men vil rigtig gerne arbejde lidt videre på det nu.

Vil gerne kunne gemme på hd'en, og indlæse fra  denne også. Har set en del nævne man kan gemme i xml herinde, men vil gerne hvis i kunne hjælpe mig med den anden måde også.

På forhånd tak :-)

Har følgende klasser:

Kundedatabase
Kunde(superklasse) - Privat og Firma (2 subklasser)

Kundedatabase:

import java.util.ArrayList;
/**
* Write a description of class Kundedatabase here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Kundedatabase
{
    private ArrayList<Kunde> kunder;
   
   
    public Kundedatabase()
    {
        kunder = new ArrayList<Kunde>();
    }
   
    public void tilføjKunde(Kunde theKunde)
    {
        kunder.add(theKunde);
    }
   
}

Kunde:


public class Kunde
{
    private String navn;
    private String adresse;
    private int tlf;

    /**
    * Initialise the fields of the item.
    * @param theTitle The title of this item.
    * @param time The running time of this item.
    */
    public Kunde(String theNavn, String theAdresse, int theTlf)
    {
        navn = theNavn;
        adresse = theAdresse;
        tlf = theTlf;
    }

}


Privat:


public class Privat extends Kunde

{
    private long cpr;

    /**
    * Initialize the CD.
    * @param theTitle The title of the CD.
    * @param theArtist The artist of the CD.
    * @param tracks The number of tracks on the CD.
    * @param time The playing time of the CD.
    */
    public Privat(String theNavn, String theAdresse, int theTlf, long theCpr)
    {
        super(theNavn, theAdresse, theTlf);
        cpr = theCpr;
    }
   
    public long getCpr()
    {
        return cpr;
    }

}


Firma:



/**
* Write a description of class Firma here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Firma extends Kunde
{
  private long cvr;
 
 
  public Firma(String theNavn, String theAdresse, int theTlf, long theCvr)
    {
        super(theNavn, theAdresse, theTlf);
        cvr = theCvr;
    }
   
    public long getCvr()
    {
        return cvr;
    }
   
}
Avatar billede arne_v Ekspert
29. april 2009 - 20:53 #1
Proev og kig paa det eksempel jeg lavede i http://www.eksperten.dk/spm/872500#reply_7373287
Avatar billede mcb2001 Nybegynder
30. april 2009 - 11:17 #2
hej Arne V

Jeg tror det er enormt overkill til denne opgave, og brugerens niveau...

Jeg vil anbefale dig at kigge på de to klasser:
java.io.FileWriter
java.io.BufferedWriter

java.io.FileReader
java.io.BufferedReader

De kan læse og skrive ting direkte til en java.io.File...

et eksempel:

import java.io.*;
class FileWrite
{
public static void main(String args[])
{
  try
  {
  File file = new File("out.txt");
  FileWriter fstream = new FileWriter(file);
  BufferedWriter out = new BufferedWriter(fstream);
  out.write("Hello Java");
  out.close();
  }
  catch (Exception e)
  {
  //HANDLE ERROR
  }
}
}
Avatar billede SjollerDk Nybegynder
30. april 2009 - 15:47 #3
Hej mcb2001

Har siddet og rodet med dit eksempel, men kan ikke få min data fra arraylisten ind i en samlet fil. Har rodet med serilisation, men det har jeg heller ikke kunne få til at fungere.

Er det sådan du kan være mig lidt mere behjælpelig med noget kode? Udfra mine nuværende klasser.

Hej arne

Tak for dit svar, men umiddelbart ser det lidt for komplekst ud til mig. Er på et helt begynder stadie, og vil gerne have lavet en serilastion af mit array, som jeg dernæst gemmer(ved ikke om det forkert formuleret).
Avatar billede mcb2001 Nybegynder
30. april 2009 - 18:04 #4
import java.io.*;
import java.util.*;

public class FileWrite
{
    public void writeArray(ArrayList<Kunde> list)
    {
        try
        {
            File file = new File("INSERT FILE HERE");
            FileWriter fstream = new FileWriter(file);
            BufferedWriter out = new BufferedWriter(fstream);
           
            for(int i = 0 ; i < list.size() ; ++i)
            {
                Kunde kunde = list.get(i);
               
                String output = kunde.getName() + ";";    //Denne metode skal laves!
                output += kunde.getAdresse() + ";";        //Denne metode skal laves!
                output += kunde.getTlf() + "\n";        //Denne metode skal laves!
               
                out.write(output);
            }
           
            out.close();
        }
        catch (Exception e)
        {
            //HANDLE ERROR
        }
    }
}
Avatar billede mcb2001 Nybegynder
30. april 2009 - 18:05 #5
lidt på engelsk, lidt på dansk - har basalt set bare skrevet det forrige eksempel lidt om.
Det er ikke en komplet løsning, da jeg ikke vil give dig svaret på hele din opgave.
Avatar billede arne_v Ekspert
30. april 2009 - 18:43 #6
Serialisering behoever nu ikke vaere saa svaert. Det eksempel jeg linkede til viste jo 3 x (serialisering + deserialisering). Det er vel < 5 linier per operation.
Avatar billede arne_v Ekspert
30. april 2009 - 18:44 #7
Hvis man vil skrive en CSV fil, saa ville jeg nok wrappe writeren i en PrintWriter.
Avatar billede SjollerDk Nybegynder
30. april 2009 - 22:46 #8
Hej mcb2001

Mange tak for din hjælp, er virkelig på bar bund med det her. Så rart med et tålmodigt væsen :-)

Har lavet de 3 get metoder, og det hele ser ud til at compile fint.

Men hvordan får jeg den reelt set til at gemme en fil nu? Arbejder i BlueJ (hvis du er bekendt med dette).

Igen på forhånd tak.

Til arne_v

Har kigget på dine eksempler, men da jeg er helt nybegynder, er de ret svære for mig at forstå :)
Avatar billede mcb2001 Nybegynder
01. maj 2009 - 11:05 #9
i min kode, hvor der står "INSERT FILE HERE" skal du vælge et filnavn, eksemepelvis: "gemtArray.txt".

filen vil så blive gemt i dit arbejdsdirektorat.

Det er MANGE år siden jeg sidst arbejdede i bluej, men startede faktisk selv der :-)
Men hvis du kan finde dine "kunde.java", "kundegruppe.java", "kunde.class" og "kundegruppe.class" og lignende filer så har du en nogenlunde ide om hvor din "gemtArray.txt" fil ender henne.
Så prøv at finde filerne, og kør så kode, så burde du kunne finde den "gemtArray.txt" fil der bliver oprettet :-)
Avatar billede SjollerDk Nybegynder
01. maj 2009 - 14:43 #10
Ja bluej er rigtig godt som begynder værktøj synes jeg :-)

Når kalder metoden writeArray(ArrayList<Kunde> list), så spørger den efter et input til denne, som man normalt bliver spurgt andre parametrer til en metode. Og kan ikke lige lure hvilket input det er den vil have :-O
Avatar billede SjollerDk Nybegynder
01. maj 2009 - 14:45 #11
Blev da lige i tvivl, den Filewriter du har skrevet, den skal ligge i en klasse for sig selv ikke?
Avatar billede mcb2001 Nybegynder
03. maj 2009 - 19:49 #12
ja, en klasse for sig selv...
Og du skal give den listen af kunder :-)
Avatar billede SjollerDk Nybegynder
03. maj 2009 - 20:17 #13
Kan ikke lige lure hvordan jeg skal fodre den med listen af kunder. Når jeg prøver at tilføre mit kundedatabase objekt fra toolbaren til mit FileWriter objekt, så siger den bare "found kundedatabase, but expected java.util.ArrayList<Kunde>" :-O ?
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