Aus Byte Datei lesen

Status
Nicht offen für weitere Antworten.

Fretful

Aktives Mitglied
Folgendes Problem habe ich ... ich schreibe zuerst auf eine Datei hinaus mittels



Code:
public void psave(DataOutput dout){
        try{
            dout.writeUTF(this.nname);
            dout.writeUTF(this.vname);
            dout.writeUTF(this.strasse);
            dout.writeUTF(this.ort);
            dout.writeUTF(this.zusatzT);
            
        }catch(Exception e){System.out.println("FEHLER BEIM SPEICHERN: "+e.toString());}
        
        
    }

zuerst initialisiere ich aber noch den Parameter mittels:

Code:
public Speichern() {
        Person p = new Person("Fischl","Daniel","Hauptstrasse","Jabing","blub");
        FileOutputStream fos = null;
        try{
            fos = new FileOutputStream("f:\\blub");
        }catch(Exception e){ System.out.println("Fehler: "+e); }
        
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        DataOutputStream dos = new DataOutputStream(bos);
        
        p.psave(dos);
        try{
            dos.close();
            bos.close();
            fos.close();
        }catch(Exception e){System.out.print("Fehler Beim schließen der Datei: "+e); }
        
        
    }

Das klappt ja noch so weit, ich hab ne Datei in der schon die Daten stehen ... zwar auf 2 Zeilen verteilt, aber immerhinn kann ich die Datei mit dem MFC - Editor öffnen. Beim lesen aber das ich mit folgenden Zeilen implementiert habe scheint aber irgendwas schief zu gehen:

Code:
public void restore(DataInput dIn){
        try{
        nname= dIn.readUTF();
        vname = dIn.readUTF();
        strasse = dIn.readUTF();
        ort = dIn.readUTF();
        zusatzT = dIn.readUTF();
        }
        catch(Exception e){System.out.println("Fehler beim Lesen: "+e.toString()); }
        
    }

der Parameter wurde hier folgendermaßen intialisiert:

Code:
public tablemodelperson() {
        try{
            //fos = new FileOutputStream("f:\\blub");
            fis = new FileInputStream("f:\\blub");
        }catch(Exception e){ System.out.println("Fehler beim öffnen der Datei.");}
        
    }
    public Object getValueAt(int rowIndex, int columnIndex) {
        Person p  = new Person();
        try{
            
            p.restore(dis);
            
        }catch(Exception e){System.out.println("Fehler!!! "+e.toString()); }
        switch(columnIndex){
            case 0: return p.getNachname();
            case 1: return p.getVorname();
            case 2: return p.getStrasse();
            case 3: return p.getOrt();
            case 4: return p.getZusatz();
            default : return "";
            
        }
    }

aber er bringt mir immer :

Fehler beim Lesen: java.io.IOException: Stream closed
Fehler beim Lesen: java.io.IOException: Stream closed
Fehler beim Lesen: java.io.IOException: Stream closed
Fehler beim Lesen: java.io.IOException: Stream closed
Fehler beim Lesen: java.io.IOException: Stream closed

:( und ich weiß nicht worans liegt zumal ich doch genau so auslese wie ich einlese ...
 

dieta

Top Contributor
Das sieht ganz so aus, als hättest du "dis" nicht richtig geöffnet. Poste mal, wie du "dis" initialisierst.
 

Fretful

Aktives Mitglied
Jup, hab nun wieder herumgebastelt und violla ... hab nun eine Person auslesen können, doch wenn ich versuche eine 2. person auszulesen, wird nur immer die letzte person in der Datei ausgelesen ... :(

Hier mal der ganze Code vom Programm ^^


Tabellenmodell
Code:
/*
 * tablemodelperson.java
 *
 * Created on 18. Mai 2006, 10:39
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package fileperson;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Franz-Albert
 */
public class tablemodelperson extends AbstractTableModel {
    /*FileOutputStream fos = null;
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    DataOutputStream dos = new DataOutputStream(bos);
     */
    DataInputStream dis =null;
    Vector v = new Vector();
    
    /** Creates a new instance of tablemodelperson */
    public tablemodelperson() {
        try{
            //fos = new FileOutputStream("f:\\blub");
            FileInputStream fis = null;
            fis = new FileInputStream("f:\\blub");
            BufferedInputStream bis = new BufferedInputStream(fis);
            dis = new DataInputStream(bis);
            
        }catch(Exception e){ System.out.println("Fehler beim öffnen der Datei.");}
        Person p =new Person();
        try{
        while(true){
            
            p.restore(dis);
            v.add(p);
        }
        }catch(Exception e){ System.out.println("File end of File!!!!"+e); }
        System.out.println((Person) v.get(0));
        System.out.println((Person) v.get(1));
        
    }
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        /*try{
         
            p.restore(dis);
         
        }catch(Exception e){System.out.println("Fehler!!! "+e.toString()); }
         */
        Person p = (Person) v.get(rowIndex);
        
        switch(columnIndex){
            case 0: return p.getNachname();
            case 1: return p.getVorname();
            case 2: return p.getStrasse();
            case 3: return p.getOrt();
            case 4: return p.getZusatz();
            default : return "";
            
        }
    }
    
    public int getRowCount() {
        return v.size();
    }
    
    public int getColumnCount() {
        return 5;
    }
    
    
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }
    
    public String getColumnName(int column) {
        switch(column){
            case 0: return "Nachname";
            case 1: return "Vorname";
            case 2: return "Strasse";
            case 3: return "Ort";
            case 4: return "Zusatz";
            default : return "";
        }
    }
    
    
    
}

Speichern:

Code:
/*
 * Speichern.java
 *
 * Created on 21. Mai 2006, 12:32
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package fileperson;

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;

/**
 *
 * @author Albert
 */
public class Speichern {
    
    /** Creates a new instance of Speichern */
    public Speichern() {
        Person p = new Person("Fischl","Daniel","Hauptstrasse","Jabing","blub");
        FileOutputStream fos = null;
        try{
            fos = new FileOutputStream("f:\\blub",true);
        }catch(Exception e){ System.out.println("Fehler: "+e); }
        
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        DataOutputStream dos = new DataOutputStream(bos);
        
        p.psave(dos);
        try{
        dos.flush();
        }catch(Exception e){ System.out.println("Fehler beim flushen !!!"+e); }
        
        Person p2 = new Person("MaxMustermann","Maxi","Fakestsreet","Faketown","blabla");
        p2.psave(dos);
        
        try{
               dos.close(); 
        }catch(Exception e){System.out.print("Fehler Beim schließen der Datei: "+e); }
        
        
    }
    
}

Speichern und lesen in der Klasse Person:

Code:
    public void psave(DataOutput dout){
        try{
            dout.writeUTF(this.nname);
            dout.writeUTF(this.vname);
            dout.writeUTF(this.strasse);
            dout.writeUTF(this.ort);
            dout.writeUTF(this.zusatzT);
            
        }catch(Exception e){System.out.println("FEHLER BEIM SPEICHERN: "+e.toString());}
        
        
    }
    
    public void restore(DataInput dIn) throws Exception{
        //try{
        nname= dIn.readUTF();
        vname = dIn.readUTF();
        strasse = dIn.readUTF();
        ort = dIn.readUTF();
        zusatzT = dIn.readUTF();
        //}
        //catch(Exception e){System.out.println("Fehler beim Lesen: "+e.toString()); }
        
    }
    
    
}

achja und was ich gerne wissen würde, wie liest so ein DataInputStream eigentlich ? liest der dann mithilfe von dem FileInputStream immer nur zeilenweise oder immer nur ein "Stück" (zB. String oder Int ) nach dem anderen ?
 
G

Gelöschtes Mitglied 5909

Gast
nehm doch ObjectOutputStream und schreib das Objekt Person in die datei, dann kannste auch wieder des ganze Objekt auslesen, is viel kürzer, einfacher und schöner :)
 

Fretful

Aktives Mitglied
Fretful hat gesagt.:
Person p =new Person();
try{
while(true){

p.restore(dis);
v.add(p);
}
}catch(Exception e){ System.out.println("File end of File!!!!"+e); }
System.out.println((Person) v.get(0));
System.out.println((Person) v.get(1));

also der fehler befindet sich genau hier, und zwar habe ich die Person nur 1 mal angelegt, lese dann daten aus der datei und speichere die Person in den Vector, --- ich lege dann keine neue Person an sondern lese wiederum nur aus der datei hinaus und speichere die GLEICHE Person in den Vektor --> fehler und alle Personen im Vektor sind praktisch das gleiche Person Objekt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
tobiasbeil Von Datei byte für byte lesen und in ein Array einfügen. Java Basics - Anfänger-Themen 11
V Jar-Datei von Byte-Array oder Stream laden? Java Basics - Anfänger-Themen 9
J Byte-Array als Hex-Datei speichern? Java Basics - Anfänger-Themen 9
U byte array in datei 'dumpen' / speichern Java Basics - Anfänger-Themen 2
S byte[] als Datei auspacken Java Basics - Anfänger-Themen 5
N datei byte für byte auslesen (verständnisproblem) Java Basics - Anfänger-Themen 2
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
G ImageIcon in Byte-Array ablegen Java Basics - Anfänger-Themen 7
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
S Byte-Array kann chars speichern? Java Basics - Anfänger-Themen 3
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
F byte, short oder doch int? Java Basics - Anfänger-Themen 6
S Performance von byte[], short[], int[]..? Java Basics - Anfänger-Themen 24
D Methoden int to byte array und zurück? Java Basics - Anfänger-Themen 5
P int zu byte Java Basics - Anfänger-Themen 8
F Byte Array wachsen lassen Java Basics - Anfänger-Themen 5
M Java Klasse Byte Java Basics - Anfänger-Themen 10
F Byte Ausgabe plötzlich falsch Java Basics - Anfänger-Themen 0
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
O Input/Output Ein (negatives) Byte über PrintWriter hinausschreiben Java Basics - Anfänger-Themen 3
T byte[] zu String mit Sonderzeichen Java Basics - Anfänger-Themen 2
W Nullpointer bei Objekt Serialisierung mit ArrayList<byte[]> etc. Java Basics - Anfänger-Themen 2
J byte - Ausgabe Java Basics - Anfänger-Themen 2
F Teil eines Byte Array an eine Methode übergeben Java Basics - Anfänger-Themen 5
S byte to float Java Basics - Anfänger-Themen 4
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
M Byte Array und Co. Java Basics - Anfänger-Themen 12
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
Y File to byte[] and byte[] to sysout Java Basics - Anfänger-Themen 3
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
F Hexfolge in Byte Array ersetzen Java Basics - Anfänger-Themen 8
P String in byte konvertieren, wie? Java Basics - Anfänger-Themen 4
T Erste Schritte Byte Java Basics - Anfänger-Themen 3
R byte[] zu String und Ausgabe Java Basics - Anfänger-Themen 2
H Variablen short <-> byte[] Java Basics - Anfänger-Themen 15
X Datentypen String in byte[] Java Basics - Anfänger-Themen 29
H Variablen 32bit Zählwert als Byte-Array Java Basics - Anfänger-Themen 9
H Variablen string nach byte Java Basics - Anfänger-Themen 12
B Frage zur Effizienz von read und read(byte[]) Java Basics - Anfänger-Themen 23
R Erste Schritte Rechnenoperationen mit byte, short und char Java Basics - Anfänger-Themen 8
V Datentypen Frage zum Datentyp Byte Java Basics - Anfänger-Themen 11
L Byte[] to String, doch bits sind gespiegelt (MSB/LSB) Java Basics - Anfänger-Themen 3
S Von byte[] nach String zurueck nach byte[]. Arrays sind nicht identisch :( Java Basics - Anfänger-Themen 6
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
V unsigned byte? Java Basics - Anfänger-Themen 27
M byte Array Mindestlänge Java Basics - Anfänger-Themen 19
U short[] nach byte[] Java Basics - Anfänger-Themen 11
D [jni] jbytearray <-> byte array Java Basics - Anfänger-Themen 8
S Datentypen Ändern eines byte[] Arrays Java Basics - Anfänger-Themen 4
B byte-weise Verschlüsselung Java Basics - Anfänger-Themen 6
P byte Array aus ImageIcon Java Basics - Anfänger-Themen 10
S Input/Output String in byte umwandeln? Java Basics - Anfänger-Themen 5
F von Byte zu 2 Stellig Hex Java Basics - Anfänger-Themen 3
G byte[] (Base64) korrekt übergeben Java Basics - Anfänger-Themen 4
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
G Binär in Byte speichern Java Basics - Anfänger-Themen 7
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
T Datentypen default ist int, cast zu byte nötig... Java Basics - Anfänger-Themen 2
F Byte nach Zahl umwandeln Java Basics - Anfänger-Themen 11
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
T Datentypen unsigned byte? Java Basics - Anfänger-Themen 9
G Integar zu Byte Java Basics - Anfänger-Themen 4
P Byte mit 0...255? Java Basics - Anfänger-Themen 5
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
L Umwandlung int <--> byte Java Basics - Anfänger-Themen 2
L Datentypen 250 und byte? Java Basics - Anfänger-Themen 4
L Datentypen byte[] in String und wieder zurück Java Basics - Anfänger-Themen 3
H Datentypen Byte-Array RSA Java Basics - Anfänger-Themen 9
H Datentypen Rechnen mit signed Byte-Array - unsinged byte Java Basics - Anfänger-Themen 3
N Files mit Byte an Socket versenden Java Basics - Anfänger-Themen 2
V Byte -> String -> Byte verlustfrei Java Basics - Anfänger-Themen 12
Hindi93 Byte to Int Java Basics - Anfänger-Themen 4
H Datentypen byte[] to int Java Basics - Anfänger-Themen 9
S hex zu byte Java Basics - Anfänger-Themen 4
M Byte Array: Werte größer 127? Java Basics - Anfänger-Themen 11
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5
H 1 Byte Status Variable Java Basics - Anfänger-Themen 3
P Datentypen Byte und char Typecast Java Basics - Anfänger-Themen 2
M Bit/Byte Operationen Java Java Basics - Anfänger-Themen 8
W Datentypen int -> byte Java Basics - Anfänger-Themen 2
H Datentypen Byte-Array aus Stream lesen Java Basics - Anfänger-Themen 3
F Typenumwandlung byte <=> int verstehen Java Basics - Anfänger-Themen 3
S Byte eines arrays Java Basics - Anfänger-Themen 17
N Frage zu Datentyp byte Java Basics - Anfänger-Themen 14
B unsigned byte Problem Java Basics - Anfänger-Themen 9
S 2 Byte Arrays addieren Java Basics - Anfänger-Themen 45
S Unbekannte Daten einlesen, speichern und in einem byte Array speichern Java Basics - Anfänger-Themen 3
S Alle Datentypen in byte Array und zurückwandeln Java Basics - Anfänger-Themen 2
H Frage zu Byte-Streams Java Basics - Anfänger-Themen 2
Z Wie Byte[] in einen String oder int konvertieren Java Basics - Anfänger-Themen 2
0 byte[] -> hex Java Basics - Anfänger-Themen 2
G char[] in byte[] konvertieren? Java Basics - Anfänger-Themen 2
V Byte Arrays in Strings umwandeln und splitten Java Basics - Anfänger-Themen 2
M unsigned byte Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben