Clob,Blob,InputStream,byte 互转

阅读更多
一、byte[]=>Blob

我们可以通过Hibernate提供的表态方法来实现如:
org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]);


二、Blob=>byte[]
/**
* 把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
InputStream is = new ByteArrayInputStream(new byte[1024]);


五、InputStream => Blob
可通过Hibernate提供的API:

Hibernate.createBlob(new FileInputStream(" 可以为图片/文件等路径 "));


六、Blob => InputStream
Blog转流,可通过提供的API直接调用:
new Blob().getBinaryStream();


七、Clob转InputStream
InputStream fileOs=null;
Clob clob= res.getClob("XXXX");
int i=0;
fileOs = clob.getAsciiStream();
int len = (int)clob.length();
byte by[] = new byte[len];
try {
    while(-1 != (i = fileOs.read(by, 0, by.length))){
         fileOs.read(by, 0, i);
    }
} catch (IOException e) {
     e.printStackTrace();
}


以上均为转载:http://my.oschina.net/zimingforever/blog/81691

你可能感兴趣的:(Clob,Blob,InputStream,byte,互转)