我正在研究一個java web應用程序,其中的文件將存儲在數據庫中。本來我們在數據庫中已恢復的文件通過簡單地調用getBytes
我們的結果集:使用明顯的構造如何將InputStream轉換爲DataHandler?
byte[] bytes = resultSet.getBytes(1);
...
這個字節數組,然後轉換成DataHandler
:
dataHandler=new DataHandler(bytes,"application/octet-stream");
,直到我們工作很大開始嘗試存儲和檢索較大的文件。將整個文件內容轉儲到一個字節數組中,然後構建一個DataHandler
,這隻需要太多的內存。
我的直接想法是用getBinaryStream
檢索數據庫中的數據流,並以某種方式將InputStream
轉換爲DataHandler
以有效的內存方式。不幸的是,似乎沒有直接的方法將InputStream
轉換爲DataHandler
。我一直在玩的另一個想法是從InputStream
讀取大塊數據,並將它們寫入DataHandler
的OutputStream
。但是...我找不到創建「空」DataHandler
的方法,當我撥打getOutputStream
時返回非空OutputStream
...
有沒有人做過這個?我會很感激任何幫助,你可以給我或帶領正確的方向。
啊,那是一個偉大的想法。當我有機會的時候我會嘗試。 – pcorey 2010-05-13 21:58:48
我以爲是一樣的。但要小心,那麼必須使用DataHandler(使用它的輸入),「在循環中」,而ResultSet處於打開狀態。例如,你不可能將DataHandler對象傳遞給上層。 – leonbloy 2010-05-13 22:02:02
@leonbloy聲明的目標是處理數據而不從結果集中複製數據。這意味着無論你如何做,結果集必須全部打開。 – 2010-05-13 23:04:02