oracle数据库中存储了一个image字段,字段类型为blob,存储了一个858k的图片进去
通过 sql读取blob时,如果按照单字节读取,图片可以完整读出
如果 按照字节数组读取,就一直出错
代码如下,当前代码为单字节读取
String blobSql = "select * from emp where empno = ?";
PreparedStatement ps = conn.prepareStatement(blobSql);
ps.setInt(1, 7369);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Blob image = rs.getBlob("image");
DataOutputStream dos =
new DataOutputStream(new FileOutputStream(7369 + "_image.jpeg"));
InputStream fis = image.getBinaryStream();
int out;
byte[] outByte = new byte [100]; // 问题代码段
while ((out = fis.read()) != -1) { // 问题代码段
dos.write(out);
}
System.out.println("write file over");
fis.close();
dos.flush();
dos.close();
}
如果换为
byte[] outByte = new byte [100];
while ((out = fis.read(outByte)) != -1) {
dos.write(out);
}
则 图片大小为
换为 new byte [10]; 则图片大小为
换为 new byte [5]; 则图片大小为
字节数组越小,读到的内容越多。
求教,这个是什么原因导致的,请不吝赐教,谢谢。
------解决方案--------------------
为什么读取流的把文件读进数组,而写入流把int out写进输出流,不是应该把 outByte数组写进去么?
难道我看错了么?