Datei Einlesen
-
Hi zusammen,
ich lese in Java in einem Applet eine Datei ein.
Jetzt hab ich bemerkt, dass diese Datei immer mal mehr oder weniger vollständig eingelesen wird...
Interessant ist es, dass ich z.B. das Applet neustarte, dann geht es, dann wieder reset, dann geht es nicht mehr!?
Kennt dieses Problem jemand?Ich verwende übrigens einen "FileImageInputStream".
Vielleicht ist dies das Problem??Gruß,
Tobias
-
Hi
Pack mal bischen Code hier rein damit wir mal sehen was du da genau gemacht hast.
Am besten die stelle wo du die datei leist.
-
schliesst Du den Stream mit close() nach jeder abgeschlossenen Aktion?Spätestens beim REset!!
-
Hi, hier ein bisschen Code:
Wenn ich grad so nachsehe, schliesse ich die Datei nirgends.
Wäre das denn so schlimm???Es ist ja auch nicht so, dass mal von einer Datei nichts eingelesen wird.
Sondern nur nicht "so viel"...!?!?// Datei Öffnen public int openFile(String filename) { file = new File(filename); try { fiis = new FileImageInputStream(file); } catch(IOException e) { return -1; } fiis.setByteOrder(ByteOrder.LITTLE_ENDIAN); return 0; } // Integer Einlesen public int readInt() { try { return fiis.readInt(); } catch(IOException e) { return -1; } } // Byte Einlesen public byte readByte() { try { return fiis.readByte(); } catch(IOException e) { return -1; } } // Double Einlesen public double readDouble() { try { return fiis.readDouble(); } catch(IOException e) { return -1; } } // String Einlesen public String readString() { int len = readInt(); String s = ""; byte[] b = new byte[1]; if( len==-1 ) return null; for(int i=0;i<len;i++) { b[0] = readByte(); if( b[0]==-1 ) return null; s = s.concat(new String(b)); } return s; }
-
Streams sollten nach der Verwendung IMMER geschlossen werden.
-
ok, hab ich gemacht...
Hat aber keinen Unterschied gemacht!D.h.:
Lade \1: Alles geht
Lade \1: Teilweise eingelesen
...Kann es an diesem FileImageInputStream liegen?
Warum bricht der mal in der Hälfte ab, und mal wieder nicht?
(Randomisiert? LOL)
-
Komisch ich sehe da keine Fehler.
Ja ausser das du die stelle wo du die Datei schliest.
Was passiert den da genau wird.
Wird immer an der selben stelle nicht gelesen oder ist es unterscheidlich.?
-
Hi, es ist nicht immer die selbe Stelle!
Ich lese die Datei in einem Konstruktor ein.
Kann es vielleicht sein, dass dabei nicht gewartet wird, bis die Datei komplett eingelesen ist?
So z.B. wie bei einem getImage...Tobias
-
Hi
Es kann sein das ein Thread gestartet wird der dann immer unterscheidlich schnell beim lesen ist. DAs ist aber eine Vermutung.
Hast du es schonmal versucht mit einem Debugger dir das ganze anzuschauen.
-
Nein, eigentlich noch nicht!
Wollte erst wissen, ob das evtl. ein Standard-Fehler ist...
Werde jetzt aber mal suchen gehen und mich dann melden!
-
Hi,
ich hab das jetzt mit der BufferedReader-Taktik (J1.1) statt der ImageFilterInputStream-Taktik (J1.4) gelöst...
Ich bin mir noch nicht ganz sicher, aber es scheint jetzt doch problemlos zu klappen!
Gruß,
Tobias