我正在开发一个Java Web应用程序,其中文件将存储在数据库中。最初,我们通过简单地在结果集上调用getBytes
来检索已在数据库中的文件:
byte[] bytes = resultSet.getBytes(1);
...
这个字节数组然后使用明显的构造器转换为DataHandler
:
dataHandler = new DataHandler(bytes, "application/octet-stream");
这个方案在我们开始尝试存储和检索更大的文件时表现得很好,但是将整个文件内容转储到字节数组中,然后构建一个DataHandler
显然需要太多内存。
我立即想到的是使用 getBinaryStream
从数据库中获取数据流,然后以一种节省内存的方式将该InputStream
转换为DataHandler
。不幸的是,似乎没有直接将InputStream
转换为DataHandler
的方法。另一个我一直在尝试的想法是从InputStream
读取数据块,并将它们写入DataHandler
的OutputStream
。但是...我找不到创建返回非空OutputStream
的“空”DataHandler
的方法当我调用getOutputStream
时....
有人做过这个吗?非常感谢任何帮助或指引。
getInputStream
应该返回一个新的InputStream
。 - husayt