PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Speichern im Netz



BlueJay
05-02-2011, 16:42
Hallo Leute,

doch, es geht, aber nur bei selbstgeschriebenem Buffers.

Problem: ein Bild soll auf einem Netzlaufwerk gespeichert werden.

Ansatz:


public void save_image()
{
try
{ File outfil = new File(out); // out ist global
ImageIO.write(buffima,"png",outfil);
}
catch (IOException e) { System.out.println("Error while saving "+out); }
}


out ist der Filename komplett mit Pfad
buffima ist ein (ziemlich fettes) Bild, was erzeugt wurde.

Das funktioniert zwar lokal, aber nicht im Netz!
Schreibberechtigung ist gegeben (die zugehörigen Texte, vom selben Package generiert, lassen sich abspeichern)
Es findet keine Exception statt, es gibt auch sonst keine Fehlermeldung, aber die Datei ist anschließend nicht auf dem Laufwerk.

Das Ganze geht nur daneben, wenn das Programm aus dem jar gestartet wird. Aus der Netzbohnen-Umgebung ist die Welt in Ordnung und das Bild im Netz!

Wie komme ich da weiter?

Gruß,
Ulrike

John W
05-02-2011, 19:44
Erstmal fehlt das Schließen der Datei, evtl. liegt es ja daran?


outfil.flush();
outfil.close();

BlueJay
05-02-2011, 20:28
Diese beiden Methoden sind bis dato der Klasse File unbekannt.
Und in der ImageIO sieht es auch düster aus.

Auch in den Oracle-Tutorien zum Bilderladen/speichern steht nichts davon. :(

John W
05-02-2011, 20:50
Ah, shit, lang nix mehr mit Dateien gemacht... Streams kann man flushen und schließen...

Vielleicht in einen FileOutputStream schreiben und den dann schreiben lassen?
Sähe dann z.B. so aus:


File outfil = new File(out);
if (!outfil.exists())
if(!outfil.createNewFile())
System.err.println("Couldn't create file!");
if (outfil.canWrite())
System.err.println("Cannot write file!");
else
{
System.err.println("Writing to file...");
FileOutputStream fos = new FileOutputStream(outfil);
ImageIO.write(buffima,"png",fos);
fos.flush();
fos.close();
System.err.println("Finished.");
}

BlueJay
05-02-2011, 22:01
Diese Elemente scheinen sich alle zu vertragen, zumindest lokal. Geschwindigkeitseinbußen scheint es auch nicht zu geben (12MB-Bild).

Und er schreibt vom jar aus ins Netz.

Vielen Dank! Also, ohne Stream geht's wohl nicht in Richtung Server.