Auslesen einer Textdatei

Dieses Thema im Forum "Java/Mono/dotGNU" wurde erstellt von MTS, 18.03.2004.

  1. MTS

    MTS Kaiser

    Dabei seit:
    09.11.2002
    Beiträge:
    1.242
    Zustimmungen:
    0
    Ort:
    NRW, Bochum
    Ich habe ein wahrscheinlich für erfahrene Java Menschen simples Problem...
    Ich muss in meinem Projekt eine LinkedList abspeichern. Vom Prinzip her will ich das so haben, dass sie in 2 Schritten gespeichert wird:
    (Die Liste enthält Objekte mit dem Attribut Name)
    Erst wird eine Auflistung aller Namen, getrennt durch Simikola in eine Textdatei gespeichert. Danach werden alle Objekte eineln abgespeichert, mit dem jeweiligen "Name" als dateiname (+ Erweiterung).
    Dieser Schritt geht auch soweit. Ob ich das geschickt gelöst habe weiss ich nicht. Ich bin noch neu in Java...
    Das eigentlich Problem gibt es jetzt beim Auslesen. Und zwar bekomme ich dummerweise diese Textdatei nicht korrekt ausgelesen. Ich hab schon mehrere Versuche unternommen, die immer irgendwie gescheitert sind. Hier ersteinmal der code as is.

    Das Abspeichern:


    String filename = "/home/tobias/party.ser"; //sp?ter wird das hier Variabel ...

    //1. Eine liste aller Member Namen speichern:
    String MemberNames = "";
    int i;
    for (i = 0; i < Party.getMemberCount(); i = i + 1) {
    MemberNames = MemberNames + Party.getMember(i).getName();
    MemberNames = MemberNames + ";";
    }

    try
    {
    filename = "/home/tobias/" + Party.GetName() + ".dat";
    FileOutputStream file = new FileOutputStream(filename);
    DataOutputStream strm = new DataOutputStream(file);
    //strm.writeUTF(MemberNames);
    strm.writeBytes(MemberNames);
    strm.close();
    }
    catch ( IOException e ) { System.err.println( e ); }


    //2. Alle MemberObjekte Speichern!
    for (i = 0; i < Party.getMemberCount(); i = i + 1) {
    try
    {
    filename = "/home/tobias/" + Party.getMember(i).getName() + ".dat";
    FileOutputStream file = new FileOutputStream( filename );
    ObjectOutputStream o = new ObjectOutputStream(file);
    o.writeObject( (Object) Party.getMember(i) );
    o.close();
    file.close();
    }
    catch ( IOException e ) { System.err.println( e ); }


    }

    }


    Und mein Lesen Code

    String MemberNames = "";
    String filename = "/home/tobias/test.dat"; //Sp?ter Variabel ... test.dat existiert ;)
    if (Party == null) {Party = new UParty("test"); }; // spaeter muss der PartyName irgendwo abgespeichert und hier geladen werden.
    try
    {


    // Spaeter soll filename ausw?hlbar sein
    filename = "/home/tobias/test.dat";

    FileInputStream file = new FileInputStream( filename );

    // DataInputStream strm = new DataInputStream(file);
    // InputStreamReader strm = new InputStreamReader(file);
    BufferedReader strm = new BufferedReader(new InputStreamReader(file));


    char[] c;
    c = new char[5];
    strm.read(c);
    MemberNames = new String(c);


    if (MemberNames != "") {jLabel3.setText(MemberNames );} else {jLabel3.setText("Nope");} // just for testing.



    }
    catch ( IOException e ) { System.err.println( e ); }

    //Die Membereinlesen:
    String Membername = "";
    int i = 0;
    int k = 0;
    Tmember temp;
    String thename;


    while (i < MemberNames.length() ) {
    k = i;
    while (MemberNames.charAt(k) != ';') {k = k +1;}
    Membername = MemberNames.substring(i,k);
    k = k + 1;
    i = k ;
    try {
    thename = "/home/tobias/" + Membername + ".dat";

    FileInputStream file = new FileInputStream(filename);
    ObjectInputStream o = new ObjectInputStream(file);
    // System.out.println(o.available());
    temp = new Tmember();
    temp = (Tmember) o.readObject();
    Party.AddMember( temp );
    o.close();
    file.close();
    }
    catch ( IOException e ) { System.err.println( e ); }
    catch ( ClassNotFoundException e ) { System.err.println( e ); }
    }

    RefreshList();
    }



    Ich wäre für Hilfe dankbar
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Snieff

    Snieff Grünschnabel

    Dabei seit:
    29.07.2003
    Beiträge:
    7
    Zustimmungen:
    0
    Ort:
    nähe München
    Hier nur ein paar Tips:
    - Das Speichern des Namens würde ich mit nem BufferedWriter und einfach mit .write(String+"\n") machen, das einlesen kannst du dann sehr einfache mit einem String=BufferedReader.readLine machen.
    - Suchen ins Strings mit indexOf, liefert der -1, dann nicht gefunden
    Hier ginge auch ein StringTokenizer (Der Splittet strings nach einem bel. Trennzeichen und du kannst dann mit getNextToken() die einzelnen Teile bekommen)
    - Casts nach Object kannst du dir sparen, jedes Objekt ist ein Object.

    Ich hab nur ganz kurz über deinen Code geguckt, vielleicht helfen dir ja die Anregungen.
     
  4. MTS

    MTS Kaiser

    Dabei seit:
    09.11.2002
    Beiträge:
    1.242
    Zustimmungen:
    0
    Ort:
    NRW, Bochum
    Ja danke. das geht tatsächlich ;)

    Aber leider ergibt sich jetzt ein neues Problem...
    Hier wird eine StreamCorruptedException mit der Meldung "Invalid Header" geworfen.
    In der Beschreibung dazu steht auch nur dass die (gespeicherten) Daten fehlerhaft seien. Das kann aber eigentlich gar nicht sein ... Das entzieht sich völlig meiner Kennnis...


    FileInputStream file = new FileInputStream(filename);
    ObjectInputStream o = new ObjectInputStream(file);
    // System.out.println(o.available());
    temp = new Tmember();
    temp = (Tmember) o.readObject();
    Party.AddMember( temp );
    o.close();
    file.close();
     
Thema:

Auslesen einer Textdatei

Die Seite wird geladen...

Auslesen einer Textdatei - Ähnliche Themen

  1. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...
  2. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...
  3. (gelöst) Beliebige Zeile aus einer Datei von unten auslesen

    (gelöst) Beliebige Zeile aus einer Datei von unten auslesen: Hallo, ich habe eine log-Datei die ständig nach unten wächst. Wie lese ich perfomanceschönend da die 11 Zeile von unten aus ? Danke und...
  4. Mehrere Werte aus einer Datei auslesen und in script benutzen?

    Mehrere Werte aus einer Datei auslesen und in script benutzen?: Hallo, ich habe eine txt-Datei mit folgendem Aufbau: benutzer passwort benutzer2 passwort2Aus dieser Datei möchte ich zeilenweise dem...
  5. Script: Auslesen von Werten einer Datei ...

    Script: Auslesen von Werten einer Datei ...: Hallo Liebe Unixboard Gemeinde, ich habe ein kleines Problem bei der Erstellung eines Scripts. Ich möchte gern ein Script entwerfen, welches mit...