String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式
Blob對(duì)字符串類(lèi)型操作
String轉(zhuǎn)換Blob
可以通過(guò)SerialBlob創(chuàng)建Blob對(duì)象,SerialBlob下有兩個(gè)構(gòu)造函數(shù),如需創(chuàng)建Blob對(duì)象,可以使用 byte[] 類(lèi)型,先把String轉(zhuǎn)成byte[]再調(diào)用構(gòu)造函數(shù)。
String 轉(zhuǎn)換為byte[]
/** * String 轉(zhuǎn) byte[] * @param str 請(qǐng)求進(jìn)入字符串 * @return 返回byte[] 數(shù)組 * @throws Exception 拋出錯(cuò)誤 */ 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[] 轉(zhuǎn)為 SerialBlob
Blob blob=new SerialBlob(readStream(str))
Blob轉(zhuǎn)換Sting
同理,Blob類(lèi)型轉(zhuǎn)換為String,就是反過(guò)來(lái),先轉(zhuǎn)換成byte[],再轉(zhuǎn)換成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轉(zhuǎn)Blob
可以把File文件先轉(zhuǎn)換成byte[],再通過(guò)SerialBlob對(duì)象創(chuàng)建
File轉(zhuǎn)為byte[]
這個(gè)方法試試示例,可以去網(wǎng)上找一下File轉(zhuǎn)換byte[]流的方法
//這個(gè)方法只是示例,不推薦這樣使用 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[] 轉(zhuǎn)為 SerialBlob
Blob blob=new SerialBlob(readStream(str))
Blob轉(zhuǎn)File
可以通過(guò)Blob轉(zhuǎn)成InputStream,再通過(guò)讀取的方式轉(zhuǎn)成File
Blob轉(zhuǎn)InputStream
InputStream in = blob.getBinaryStream()
InputStream轉(zhuǎn)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(); } } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java多線(xiàn)程CountDownLatch的實(shí)現(xiàn)
本文主要介紹了Java多線(xiàn)程CountDownLatch的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Java 實(shí)現(xiàn)模擬用戶(hù)登錄的示例代碼
這篇文章主要介紹了Java 實(shí)現(xiàn)模擬用戶(hù)登錄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Java之JFrame輸出Helloworld實(shí)例
這篇文章主要介紹了Java之JFrame輸出Helloworld的方法,以輸出Helloworld的實(shí)例分析了JFrame的簡(jiǎn)單入門(mén)技巧,需要的朋友可以參考下2015-02-02JPA原生SQL(自定義SQL)分頁(yè)查詢(xún)邏輯詳解
這篇文章主要介紹了JPA原生SQL(自定義SQL)分頁(yè)查詢(xún)邏輯詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11java中用數(shù)組實(shí)現(xiàn)環(huán)形隊(duì)列的示例代碼
這篇文章主要介紹了java中用數(shù)組實(shí)現(xiàn)環(huán)形隊(duì)列的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04解決springboot文件配置端口不起作用(默認(rèn)8080)
這篇文章主要介紹了解決springboot文件配置端口不起作用(默認(rèn)8080),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08java簡(jiǎn)單讀取properties配置文件的方法示例
這篇文章主要介紹了java簡(jiǎn)單讀取properties配置文件的方法,涉及java針對(duì)properties配置的載入及文件屬性讀取相關(guān)操作技巧,需要的朋友可以參考下2017-09-09JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析
這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11java使用wait和notify實(shí)現(xiàn)線(xiàn)程通信
這篇文章主要為大家詳細(xì)介紹了java如何使用wait和notify實(shí)現(xiàn)線(xiàn)程之間通信,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10