如何将InputStream转换为DataHandler?

14 浏览
0 Comments

如何将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读取数据块,并将它们写入DataHandlerOutputStream,但是...我找不到一种方法来创建一个"空"的DataHandler,当我调用getOutputStream时,返回一个非空的OutputStream...

有人做过这个吗?我将非常感激您给我任何帮助或指导方向。

0