Verwendung des Objekts javax.activation.DataHandler prüfen

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:

< span class= "Code"> < span class="JavaType"> Datei < /span> f = < span class= "JavaKeyword"> neu < /span> Datei (" 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
// Inhalt, der mit der Methode writeTo abgerufen wurde.

FileDataSource fos_out = new FileDataSource(f);

DataHandler img_out = new DataHandler(fos_out);


return img_out;