在我们的程序开发当中,经常会用到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();

以上片段可作为读者参考。

byte数组转blob类型_Java类型相互转换byte[]类型,blob类型相关推荐

  1. byte[] 数组和字符串的转换,与byte[] 数组和int类型的之间的转化

    我们先来看看byte bool  int ushort  等的定义 首先时byte[]数组与string之间的转换 string 转换位byte[] 数组 string str = "1-1 ...

  2. java 运行时类型_Java基础之RTTI 运行时类型识别

    运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息. 多态(polymorphism)是基于R ...

  3. 根据变量推断变量类型_Java A的新本地变量类型推断

    根据变量推断变量类型 对于编程语言迷来说,新闻几乎比这更令人兴奋! 现在,存在状态为"候选"的JEP 286用于本地变量类型推断 . 以及Brian Goetz的反馈请求,我很想邀 ...

  4. java byte数组转化为流_java中字节数组和字符串、IO流和字节数组之间的转换

    在实际开发中经常会碰到乱码问题: 首先查看系统支持的编码方式,默认的编码方式 //检查java支持的编码 System.out.println(Charset.availableCharsets(). ...

  5. java常见的异常类型_Java几种常见的异常类型

    转载自:https://blog.csdn.net/niceworkgogogo/article/details/71746208 常见异常类型: 算数异常类:ArithmeticExecption ...

  6. java中两种异常类型_Java中的三种异常类型

    java中两种异常类型 Errors are the bane of users and programmers alike. Developers obviously don't want thei ...

  7. java main类型_java中main方法的返回类型是?

    感谢邀请.man方法是void类型,void没有返回值类型 在java语言程序编写时都会涉及到一个main方法,它的格式为: public static void main(String[] args ...

  8. java中的无效的列类型_java.sql.SQLException: 无效的列类型: 1111

    在使用Mybaits Plus更新数据时报错: 2018-09-05 10:55:40.712 DEBUG 15828 --- [nio-8110-exec-1] c.c.x.s.m.A.update ...

  9. java不支持类型_java泛型为什么不支持原始类型?

    这里是说由于JVM bytecode对于原始类型和引用类型的字节码不相同,为了保持兼容性,故不支持原始类型 At the other end, we have Java's current erase ...

  10. java日期类型_Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

最新文章

  1. python好还是c+-嵌入式系统中,Python与C/C++哪方更为适用?
  2. Access update的时候传递参数的顺序
  3. Java之二分法查找
  4. 杭电ACM刷题(1):1002,A + B Problem II
  5. 类型转换出现在赋值运算符左边的情况
  6. md5 php 加密后乱码_PHP md5函数 的16位字符乱码问题解决-阿里云开发者社区
  7. 一个大龄程序员对大家的总结性忠告(源于VeryCD)
  8. Android修改Eclipse 中的Default debug keystore路径,以及修改android的AVD默认路径
  9. Opencv图像数据结构剖析
  10. Summarize 2014 Look Ahead 2015
  11. c++ strlen 使用
  12. 简账(开源记账软件)-数据库设计
  13. web前端学习第三周
  14. c语言中字符后u代表什么意思,C语言中的0U或1U是什么意思?
  15. matlab atem(),非特定人的英文
  16. python怎么输入三引号_python三引号如何输入
  17. 40岁以上的程序员该怎么办?年龄不是问题
  18. 码教授送你的毕业季礼物
  19. C# Winform基于socket编程的五子棋游戏(带聊天和发送文件功能)
  20. 安大计算机学院李炜教授,自动化系年度人物候选 | 李炜

热门文章

  1. [转]Linux TCP/IP 协议栈的关键数据结构Socket Buffer(sk_buff )
  2. SSLOJ 1351.矩形反色
  3. 设计类时需要注意的6个地方
  4. hibernate组件映射
  5. java:Eclipse插件springsource-tool-suite的下载和安装
  6. 中国剩余定理-模版(互质版)
  7. Vissim 中动态交通路径选择
  8. HDU 4407 Sum(容斥原理+状态压缩)
  9. NET牛人应该知道些什么
  10. [ JAVA编程 ] double类型计算精度丢失问题及解决方法