檢閱是否使用 javax.activation.DataHandler 物件

在 Liberty 中,每個 DataHandler 物件只能寫入輸出串流一次。 將 DataHandler 物件多次寫入 OutputStream 物件會產生空檔案。 呼叫 javax.activation.DataHandler.writeTo(OutputStream) 方法之後,您無法將 DataHandler 物件傳遞至另一個方法、傳回它或儲存它供以後使用。

暫行解決方法是建立新的 DataHandler 物件,然後使用已透過 writeTo 方法從現有 DataHandler 物件擷取的內容,起始設定這個新的 DataHandler 物件。 例如:

File f = new 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;