Java 类型相互转换byte[]类型,Blob类型详细介绍
在我们的程序开发当中,经常会用到java.sql.Blob、byte[]、InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们之间互换的util.
一、byte[]=>Blob
我们可以通过Hibernate提供的表态方法来实现如:
org.hibernate.Hibernate.Hibernate.createBlob(newbyte[1024]);
二、Blob=>byte[]
目前没有找到好一点的API提供,所以只能自已来实现。示例如下:
/** *把Blob类型转换为byte数组类型 *@paramblob *@return */ privatebyte[]blobToBytes(Blobblob){ BufferedInputStreamis=null; try{ is=newBufferedInputStream(blob.getBinaryStream()); byte[]bytes=newbyte[(int)blob.length()]; intlen=bytes.length; intoffset=0; intread=0; while(offset<len&&(read=is.read(bytes,offset,len-offset))>=0){ offset+=read; } returnbytes; }catch(Exceptione){ returnnull; }finally{ try{ is.close(); is=null; }catch(IOExceptione){ returnnull; } } }
三、InputStream=>byte[]
privatebyte[]InputStreamToByte(InputStreamis)throwsIOException{ ByteArrayOutputStreambytestream=newByteArrayOutputStream(); intch; while((ch=is.read())!=-1){ bytestream.write(ch); } byteimgdata[]=bytestream.toByteArray(); bytestream.close(); returnimgdata; }
四、byte[]=>InputStream
byte[]到inputStream之间的转换很简单:InputStreamis=newByteArrayInputStream(newbyte[1024]);
五、InputStream=>Blob
可通过Hibernate提供的API:Hibernate.createBlob(newFileInputStream("可以为图片/文件等路径"));
六、Blob=>InputStream
Blog转流,可通过提供的API直接调用:newBlob().getBinaryStream();
以上片段可作为读者参考。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!