如何将InputStream转换为DataHandler?
- 论坛
- 如何将InputStream转换为DataHandler?
14 浏览
如何将InputStream转换为DataHandler?
我正在开发一个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
,但是...我找不到一种方法来创建一个"空"的DataHandler
,当我调用getOutputStream
时,返回一个非空的OutputStream
...
有人做过这个吗?我将非常感激您给我任何帮助或指导方向。