项目中使用大文本,或者是存文件可以使用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();
}
}
}
版权声明:本文为weixin_47416294原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。