【发布时间】:2011-02-19 07:24:29
【问题描述】:
我正在开发一个将文件存储在数据库中的 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...
有人做过吗?如果您能给我提供任何帮助或指引正确的方向,我将不胜感激。
【问题讨论】:
标签: java inputstream outputstream