Réviser l'utilisation de l'objet javax.activation.DataHandler

Dans Liberty, chaque objet DataHandler peut être écrit une seule fois dans un flux de sortie. Le fait de placer un objet DataHandler dans un objet OutputStream plusieurs fois génère un fichier vide. Après avoir appelé la méthode javax.activation.DataHandler.writeTo(OutputStream), vous ne pouvez pas transmettre l'objet DataHandler à une autre méthode, le renvoyer ou le stocker pour une utilisation ultérieure.

Pour remédier à cette situation, vous pouvez créer un nouvel objet DataHandler et initialiser ce dernier avec le contenu déjà extrait de l'objet DataHandler existant à l'aide de la méthode writeTo. Par exemple :

< span class="Code"> < span class= "JavaType"> Fichier < /span> f = < span class="JavaKeyword"> nouveau < /span> fichier ("received_image") ;
if (f.exists()) {
f.delete();
}

FileOutputStream fos = new FileOutputStream(f);

// Write the DataHandler object to the output stream.
img_in.writeTo(fos);

// Create a new DataHandler object and initialize it with
// the content that was retrieved using the writeTo method above.

FileDataSource fos_out = new FileDataSource(f);

DataHandler img_out = new DataHandler(fos_out);


return img_out;