In Liberty kann jedes DataHandler-Objekt nur ein einziges Mal in einen Ausgabedatenstrom geschrieben werden.
Wenn ein DataHandler-Objekt mehrfach Ergebnisse in ein OutputStream-Objekt schreibt, kann dies zu einer leeren Datei führen.
Nach dem Aufruf der Methode javax.activation.DataHandler.writeTo(OutputStream) kann das
DataHandler-Objekt an keine weitere Methode mehr übergeben, zurückgegeben oder für spätere Verwendung gespeichert werden.
Als Ausweichlösung können Sie ein neues DataHandler-Objekt erstellen und das DataHandler-Objekt mit dem Inhalt, der bereits
mit der Methode writeTo aus dem vorhandenen DataHandler-Objekt abgerufen wurde, initialisieren. Beispiel:
|
File f = new File("received_image"); if (f.exists()) { f.delete(); } FileOutputStream fos = new FileOutputStream(f); // DataHandler-Objekt in den Ausgabedatenstrom schreiben img_in.writeTo(fos); // Neues DataHandler-Objekt erstellen und mit dem Inhalt, der mit der // vorherigen writeTo-Methode abgerufen wurde, initialisieren FileDataSource fos_out = new FileDataSource(f); DataHandler img_out = new DataHandler(fos_out); return img_out; |