数据库可以保存从http读取的zip文件并直接将其保存到数据库,而无需在java中物理创建它
我正在从url读取zip文件,现在我想直接将其保存到数据库中,而不用使用java和hibernate进行物理存储
我读的是zip文件
URLConnection uCon = null;
URL Url;
byte[] buf;
ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream("mytest.zip"));
Url= new URL(http://xyz.com/pages/info.doc);
uCon = Url.openConnection();
is = uCon.getInputStream();
buf = new byte[size];
is = uCon.getInputStream();
outStream.putNextEntry(new ZipEntry("info.doc"));
while ((ByteRead = is.read(buf)) != -1)
{
outStream.write(buf, 0, ByteRead);
ByteWritten += ByteRead;
}
is.close();
outStream.close();
我不想在创建“mytest.zip”后将其物理保存,我想将其直接保存在DB中?可能吗?如何做到这一点
提前谢谢
# 1 楼答案
使用管道来保持低内存需求——setBlob(colunm,InputStream)——并使用IOUtils。复制以进行快速复制
这仍然没有
try
,第二个线程就好了# 2 楼答案
是的,有可能。写到
ByteArrayOutputStream
而不是写到FileOutputStream
。使用ByteArrayOutputStream
的getBytes()
方法获取内存中包含zip文件字节的字节数组创建一个准备好的语句,就像在数据库表中插入任何类型的数据一样,并使用其
setBinaryStream()
或setBlob()
方法用字节数组的内容填充其中一列。只需将ByteArrayInputStream
(以字节数组作为参数构造)传递给其中一个方法