E
exi
Gast
Hallo,
vorab verrate ich einmal, daß ich früher fleißig in Java war, dann aber zwei Jahre pausiert habe. Und nun seit wenigen Tagen wieder mit Java übe... und andauernd über Details aus anderen Sprachen stolpere. Wahrscheinlich steht mir momentan auch mein Vorwissen im Weg...
Mein Problem ist nur die Frage wie ich wiederholt eine (selbstgebastelte) Datei lesen und die vorgefundenen Daten in Objekten sichern kann. Konkret: wie generiere ich eine Wiederholungsschleife if(!eof), if-nicht-End-of-File?Wobei mir Tips aus Büchern und dem Netz bisher nur wenig geholfen haben. Es gibt *keine* Methode eof(), gut, hier habe ich wohl noch Pascal, C++ oder Fortran im Kopf. Meine Quellen nennen als Alternative die Methode read(), welches das fokusierte Byte erfasst und dahin gehend überprüft ob es noch existiert.
Angelegt hatte ich die Datei mit:
myFarbelement ist dabei serialisiert und besteht aus je drei Integer. Effektiv lese ich eine Landkarte pixelweise ein, vermerke Längengrad, Breitengrad und die Pixelfarbe. Alle meine Punkte (etwa 10000 Stück) sammle ich in einer ArrayList um dann in obiger speicherAktion jeden einzelnen Datensatz zu sichern.Klappt problemlos.
Mein Problem ist das Einlesen in einem neuen Programm.
Wobei diese auskommentierte Version noch funktioniert. Ich bekomme ein (1) Element eingelesen, dieses wird richtig gecastet und kannz.B. zum zeichnen eines Rechteckes verwendet werden.
Nur ist o.read() konsequent auf dem Wert -1! Die von der Literatur empfohlene Wiederholungsschleife wird nicht einmal betreten.
Eine feste Anzahl kann ich nicht vorgeben (will das Programm variabel halten), das mir im Kopf herumschwirrende EOF gibt es nicht, und irgendwie sehe ich vor lauter Bäumen den Wald nicht mehr.
Habt ihr mir irgendwelche Tips? Oder seht ihr mein Verständnisproblem?
danke
exi[/code]
vorab verrate ich einmal, daß ich früher fleißig in Java war, dann aber zwei Jahre pausiert habe. Und nun seit wenigen Tagen wieder mit Java übe... und andauernd über Details aus anderen Sprachen stolpere. Wahrscheinlich steht mir momentan auch mein Vorwissen im Weg...
Mein Problem ist nur die Frage wie ich wiederholt eine (selbstgebastelte) Datei lesen und die vorgefundenen Daten in Objekten sichern kann. Konkret: wie generiere ich eine Wiederholungsschleife if(!eof), if-nicht-End-of-File?Wobei mir Tips aus Büchern und dem Netz bisher nur wenig geholfen haben. Es gibt *keine* Methode eof(), gut, hier habe ich wohl noch Pascal, C++ oder Fortran im Kopf. Meine Quellen nennen als Alternative die Methode read(), welches das fokusierte Byte erfasst und dahin gehend überprüft ob es noch existiert.
Angelegt hatte ich die Datei mit:
Code:
private void speicherAktion(final String ziel) {
try {
FileOutputStream fstream = new FileOutputStream(new File(ziel));
ObjectOutputStream stream = new ObjectOutputStream(fstream);
for (int i=0; i<Datenliste.size(); i++) stream.writeObject( (myFarbelement)(Datenliste.get(i)) );
stream.close();
}
catch(java.io.FileNotFoundException ex){System.out.println("File not found error: "+ex);}
catch(java.io.IOException ex){System.out.println("IOException error: "+ex);}
}
Mein Problem ist das Einlesen in einem neuen Programm.
Code:
private void LeseQuellDatei() {
Quellliste=new ArrayList();
File cfg = new File(Quelle.getText());
if (cfg.exists()) {
InputStream fis = null;
try {
fis = new FileInputStream( cfg );
ObjectInputStream o = new ObjectInputStream( fis );
System.out.println("o.read= "+o.read());
// while (o.read()!=-1) {
myFarbelement puffer = (myFarbelement) o.readObject();
Quellliste.add(puffer);
// }
}
catch ( IOException e ) { System.err.println( e ); }
catch ( ClassNotFoundException e ) { System.err.println( e ); }
finally { try { fis.close(); } catch ( Exception e ) { } }
} else System.out.println(" Fehler! Quelldatei "+cfg+" existiert nicht! ");
}
Nur ist o.read() konsequent auf dem Wert -1! Die von der Literatur empfohlene Wiederholungsschleife wird nicht einmal betreten.
Eine feste Anzahl kann ich nicht vorgeben (will das Programm variabel halten), das mir im Kopf herumschwirrende EOF gibt es nicht, und irgendwie sehe ich vor lauter Bäumen den Wald nicht mehr.
Habt ihr mir irgendwelche Tips? Oder seht ihr mein Verständnisproblem?
danke
exi[/code]