在 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;