我正在开发一个 java web 应用程序,其中文件将存储在数据库中。最初,我们通过简单地调用getBytes
我们的结果集来检索数据库中已经存在的文件:
byte[] bytes = resultSet.getBytes(1);
...
DataHandler
然后使用明显的构造函数将此字节数组转换为:
dataHandler=new DataHandler(bytes,"application/octet-stream");
在我们开始尝试存储和检索更大的文件之前,这非常有效。将整个文件内容转储到一个字节数组DataHandler
中,然后从中构建一个只需要太多内存。
我的直接想法是检索数据库中的数据流,getBinaryStream
并以某种方式将其转换InputStream
为DataHandler
内存有效的方式。不幸的是,似乎没有直接的方法可以将 a 转换InputStream
为DataHandler
. 我一直在玩的另一个想法是从 中读取数据块并将InputStream
它们写入OutputStream
. DataHandler
但是......我找不到一种方法来创建一个“空” ,当我打电话时DataHandler
返回一个非空......OutputStream
getOutputStream
有人做过吗?我很感激你能给我的任何帮助或引导正确的方向。