pco*_*rey 23 java inputstream outputstream
我正在研究一个java Web应用程序,其中文件将存储在数据库中.最初我们通过调用getBytes结果集来检索DB中已有的文件:
byte[] bytes = resultSet.getBytes(1);
...
Run Code Online (Sandbox Code Playgroud)
然后DataHandler使用明显的构造函数将此字节数组转换为a :
dataHandler=new DataHandler(bytes,"application/octet-stream");
Run Code Online (Sandbox Code Playgroud)
这很有用,直到我们开始尝试存储和检索更大的文件.将整个文件内容转储到一个字节数组中然后构建一个DataHandler只需要太多内存.
我的直接想法是在数据库中检索数据流,getBinaryStream并以某种方式将其InputStream转换DataHandler为内存有效的方式.不幸的是,似乎没有直接的方法将一个转换InputStream成一个DataHandler.另一个想法我一直在玩从读取数据块InputStream,并将其写入OutputStream的DataHandler.但是...... 当我打电话时,我无法找到一种方法来创建一个DataHandler返回非空的"空" ...OutputStreamgetOutputStream
有没有人这样做过?我很感激你能给我的任何帮助或者正确的方向.
bug*_*gs_ 18
"Kathy Van Stone"的回答:
首先创建帮助器类,它从InputStream创建DataSource:
public class InputStreamDataSource implements DataSource {
private InputStream inputStream;
public InputStreamDataSource(InputStream inputStream) {
this.inputStream = inputStream;
}
@Override
public InputStream getInputStream() throws IOException {
return inputStream;
}
@Override
public OutputStream getOutputStream() throws IOException {
throw new UnsupportedOperationException("Not implemented");
}
@Override
public String getContentType() {
return "*/*";
}
@Override
public String getName() {
return "InputStreamDataSource";
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以从InputStream创建DataHandler:
DataHandler dataHandler = new DataHandler(new InputStreamDataSource(inputStream))
Run Code Online (Sandbox Code Playgroud)
进口:
import javax.activation.DataSource;
import java.io.OutputStream;
import java.io.InputStream;
Run Code Online (Sandbox Code Playgroud)
小智 16
我也遇到过这个问题.如果您的源数据是byte[]Axis,则已经有一个包装InputStream并创建DataHandler对象的类.这是代码
//this constructor takes byte[] as input
ByteArrayDataSource rawData= new ByteArrayDataSource(resultSet.getBytes(1));
DataHandler data= new DataHandler(rawData);
yourObject.setData(data);
Run Code Online (Sandbox Code Playgroud)
相关进口
import javax.activation.DataHandler;
import org.apache.axiom.attachments.ByteArrayDataSource;
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
70014 次 |
| 最近记录: |