Проверить использование объекта javax.activation.DataHandler

В Liberty каждый объект DataHandler может быть записан в поток вывода только один раз. Запись объекта DataHandler в объект OutputStream больше одного раза приведет к пустому файлу. После вызова метода javax.activation.DataHandler.writeTo(OutputStream) объект DataHandler нельзя передавать в другие методы, возвращать и сохранять для использования в будущем.

В качестве обходного решения можно создать новый объект DataHandler и инициализировать его данными, которые уже получены из первого объекта DataHandler посредством метода writeTo. Пример:

< span class="Code"> < span class= "JavaType"> Файл < /span> f = < span class="JavaKeyword"> new < /span> File ("received_image");
if (f.exists()) {
f.delete();
}

FileOutputStream fos = new FileOutputStream(f);

// Записать объект DataHandler в поток вывода.
img_in.writeTo(fos);

// Создать новый объект DataHandler и инициализировать его
// данными, которые были получены посредством предыдущего метода writeTo.

FileDataSource fos_out = new FileDataSource(f);

DataHandler img_out = new DataHandler(fos_out);


return img_out;