在Java編程中,Blob和File都是常用的數(shù)據(jù)類(lèi)型。Blob代表二進(jìn)制大對(duì)象,而File代表文件。有時(shí)候我們需要將Blob轉(zhuǎn)換為File,或者將File轉(zhuǎn)換為Blob,這就需要用到一些Java API來(lái)實(shí)現(xiàn)。
將Blob轉(zhuǎn)換為File:
//獲取Blob Blob blob = rs.getBlob("image"); //獲取輸出流對(duì)象 FileOutputStream fos = new FileOutputStream("temp.jpg"); //將Blob轉(zhuǎn)為字節(jié)數(shù)組 byte[] b = blob.getBytes(1, (int) blob.length()); //將字節(jié)數(shù)組寫(xiě)入輸出流中 fos.write(b); //關(guān)閉輸出流和Blob對(duì)象 fos.close(); blob.free();
將File轉(zhuǎn)換為Blob:
//獲取文件對(duì)象 File file = new File("temp.jpg"); //獲取輸入流對(duì)象 FileInputStream fis = new FileInputStream(file); //將輸入流中的字節(jié)轉(zhuǎn)為字節(jié)數(shù)組 byte[] b = new byte[(int) file.length()]; fis.read(b); //獲取Blob對(duì)象 Blob blob = con.createBlob(); //將字節(jié)數(shù)組寫(xiě)入Blob對(duì)象中 blob.setBytes(1, b); //關(guān)閉輸入流 fis.close();
需要注意的是,以上代碼的實(shí)現(xiàn)還需要先獲取到數(shù)據(jù)庫(kù)連接對(duì)象。這是因?yàn)锽lob對(duì)象是由數(shù)據(jù)庫(kù)連接提供的。