String与Blob互转和file文件与Blob互转方式
Blob对字符串类型操作
String转换Blob
可以通过SerialBlob创建Blob对象,SerialBlob下有两个构造函数,如需创建Blob对象,可以使用 byte[] 类型,先把String转成byte[]再调用构造函数。
String 转换为byte[]
/** * String 转 byte[] * @param str 请求进入字符串 * @return 返回byte[] 数组 * @throws Exception 抛出错误 */ public byte[] readStream(String str) throws Exception { InputStream inStream=new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8)); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } outStream.close(); inStream.close(); return outStream.toByteArray(); }
byte[] 转为 SerialBlob
Blob blob=new SerialBlob(readStream(str))
Blob转换Sting
同理,Blob类型转换为String,就是反过来,先转换成byte[],再转换成String。
private String blobToString(Blob blob) throws Exception { InputStream inStream=blob.getBinaryStream(); StringBuffer stringBuffer=new StringBuffer(); try { byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { String str=new String(buffer, 0, len); stringBuffer.append(str); } }catch (Exception e){ throw e; }finally { if(inStream!=null){ inStream.close(); } if(stringBuffer.length()>0){ return stringBuffer.toString(); }else{ return null; } } }
File转Blob
可以把File文件先转换成byte[],再通过SerialBlob对象创建
File转为byte[]
这个方法试试示例,可以去网上找一下File转换byte[]流的方法
//这个方法只是示例,不推荐这样使用 public static byte[] getFileByte(File file) throws Exception { byte[] data = null; InputStream in = new FileInputStream(file); data = new byte[in.available()]; in.read(data); in.close(); return data; }
byte[] 转为 SerialBlob
Blob blob=new SerialBlob(readStream(str))
Blob转File
可以通过Blob转成InputStream,再通过读取的方式转成File
Blob转InputStream
InputStream in = blob.getBinaryStream()
InputStream转File
public void blobToFile(Blob blob,File file) throws Exception { InputStream inStream=null; OutputStream outStream=null; try { outStream = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[2048]; while ((bytesRead = inStream.read(buffer, 0, 2048)) != -1) { outStream.write(buffer, 0, bytesRead); } }catch (Exception e){ throw new Exception(e); }finally { if(outStream!=null){ outStream.close(); } if(inStream!=null){ inStream.close(); } } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringMVC使用@PathVariable接收参数过程解析
这篇文章主要介绍了SpringMVC使用@PathVariable接收参数过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-10-10idea2020.3配置maven环境并配置Tomcat的详细教程
这篇文章主要介绍了idea2020.3配置maven环境并配置Tomcat的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-03-03细谈java同步之JMM(Java Memory Model)
Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果。下面我们来一起学习下JMM2019-05-05Java如何利用状态模式(state pattern)替代if else
这篇文章主要给大家介绍了关于Java如何利用状态模式(state pattern)替代if else的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11
最新评论