Java 类型相互转换byte[]类型,Blob类型详细介绍
程序员文章站
2024-03-12 11:38:38
在我们的程序开发当中,经常会用到java.sql.blob、byte[]、inputstream之间的相互转换,但在jdk的api当中,又没有直接给我们提供可用的api,下...
在我们的程序开发当中,经常会用到java.sql.blob、byte[]、inputstream之间的相互转换,但在jdk的api当中,又没有直接给我们提供可用的api,下面的程序片段主要就是实现它们之间互换的util.
一、byte[]=>blob
我们可以通过hibernate提供的表态方法来实现如:
org.hibernate.hibernate.hibernate.createblob(new byte[1024]);
二、blob=>byte[]
目前没有找到好一点的api提供,所以只能自已来实现。示例如下:
/** * 把blob类型转换为byte数组类型 * @param blob * @return */ private byte[] blobtobytes(blob blob) { bufferedinputstream is = null; try { is = new bufferedinputstream(blob.getbinarystream()); byte[] bytes = new byte[(int) blob.length()]; int len = bytes.length; int offset = 0; int read = 0; while (offset < len && (read = is.read(bytes, offset, len - offset)) >= 0) { offset += read; } return bytes; } catch (exception e) { return null; } finally { try { is.close(); is = null; } catch (ioexception e) { return null; } } }
三、inputstream=>byte[]
private byte[] inputstreamtobyte(inputstream is) throws ioexception { bytearrayoutputstream bytestream = new bytearrayoutputstream(); int ch; while ((ch = is.read()) != -1) { bytestream.write(ch); } byte imgdata[] = bytestream.tobytearray(); bytestream.close(); return imgdata; }
四、byte[]=> inputstream
byte[]到inputstream之间的转换很简单:inputstream is = new bytearrayinputstream(new byte[1024]);
五、inputstream => blob
可通过hibernate提供的api:hibernate.createblob(new fileinputstream(" 可以为图片/文件等路径 "));
六、blob => inputstream
blog转流,可通过提供的api直接调用:new blob().getbinarystream();
以上片段可作为读者参考。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!