Hallo Leute,
ich programmiere gerade schön vor mich her und stelle jetzt folgendes fest:
Ich habe folgenden Code:
Soo, wenn ich jetzt die Daten in meinen Outputstream speichere (inkl. einem 16*16 Bild) funktioniert das Speichern ohne Probleme. Beim Laden jedoch kommt an der Stelle
direkt bei x=0 und y=0 eine Exception:
Alle anderen Daten ließt er ohne Probleme aus, aber am Bild hängt er sich auf, obwohl es nur Integer Werte sind die gespeichert und wieder gelesen werden sollen.
Wenn ich den Teil mit dem Bild speichern weglasse funktioniert alles wunderbar, aber ich verstehe nicht, wieso? Was hab ich falsch gemacht?
Hat jemand eine Idee?
Gruß
Ph3n1x
ich programmiere gerade schön vor mich her und stelle jetzt folgendes fest:
Ich habe folgenden Code:
Java:
// icon ist vom Typ BufferedImage
public void writeInOOS(ObjectOutputStream oos) throws IOException {
oos.writeUTF(comment);
oos.writeUTF(tag);
oos.writeBoolean(icon != null);
if (icon != null) {
oos.writeInt(icon.getWidth());
oos.writeInt(icon.getHeight());
oos.writeInt(icon.getType());
for (int x = 0; x < icon.getWidth(); x++) {
for (int y = 0; y < icon.getHeight(); y++) {
oos.writeInt(icon.getRGB(x, y));
}
}
}
}
public void readFromOIS(ObjectInputStream ois) throws Exception {
comment = ois.readUTF();
tag = ois.readUTF();
if (ois.readBoolean()) {
int width = ois.readInt();
int height = ois.readInt();
int imageType = ois.readInt();
icon = new BufferedImage(width, height, imageType);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
icon.setRGB(x, y, ois.readInt());
}
}
}
}
Soo, wenn ich jetzt die Daten in meinen Outputstream speichere (inkl. einem 16*16 Bild) funktioniert das Speichern ohne Probleme. Beim Laden jedoch kommt an der Stelle
Java:
icon.setRGB(x, y, ois.readInt());
Java:
java.io.StreamCorruptedException: unexpected EOF in middle of data block
at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2494)
at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2570)
at java.io.DataInputStream.readInt(DataInputStream.java:370)
at java.io.ObjectInputStream$BlockDataInputStream.readInt(ObjectInputStream.java:2775)
at java.io.ObjectInputStream.readInt(ObjectInputStream.java:949)
Alle anderen Daten ließt er ohne Probleme aus, aber am Bild hängt er sich auf, obwohl es nur Integer Werte sind die gespeichert und wieder gelesen werden sollen.
Wenn ich den Teil mit dem Bild speichern weglasse funktioniert alles wunderbar, aber ich verstehe nicht, wieso? Was hab ich falsch gemacht?
Hat jemand eine Idee?
Gruß
Ph3n1x