ในการพัฒนาโปรแกรมของเราเรามักจะใช้การแปลงร่วมกันระหว่าง java.sql.blob, byte [] และ inputstream แต่ใน JDK API เราไม่ได้ให้ API ที่มีอยู่โดยตรง ชิ้นส่วนโปรแกรมต่อไปนี้ส่วนใหญ่ใช้การใช้งานที่ใช้แทนกันได้ระหว่างกัน
1. ไบต์ [] => หยด
เราสามารถใช้วิธีคำสั่งที่จัดทำโดย Hibernate เช่น:
org.hibernate.hibernate.hibernate.createeblob (ไบต์ใหม่ [1024]);
2. blob => byte []
ในปัจจุบันไม่พบ API ที่ดีกว่าดังนั้นฉันจึงสามารถใช้งานได้ด้วยตัวเองเท่านั้น ตัวอย่างมีดังนี้:
/ ** * แปลงประเภท blob เป็นประเภทอาร์เรย์ไบต์ * @param blob * @return */ ไบต์ส่วนตัว [] blobtobytes (blob blob) {bufferedInputStream คือ = null; ลอง {IS = ใหม่ bufferedInputStream (blob.getBinaryStream ()); ไบต์ [] ไบต์ = ไบต์ใหม่ [(int) blob.length ()]; int len = bytes.length; int offset = 0; int read = 0; ในขณะที่ (ออฟเซ็ต <len && (read = is.read (ไบต์, ออฟเซ็ต, len - ออฟเซ็ต))> = 0) {ออฟเซ็ต += อ่าน; } คืนไบต์; } catch (exception e) {return null; } ในที่สุด {ลอง {is.close (); IS = NULL; } catch (ioexception e) {return null; -3. inputStream => byte []
ไบต์ส่วนตัว [] InputStreamTobyte (InputStream IS) พ่น IOException {ByTeArrayOutputStream Bytestream = New ByteArrayUtputStream (); int ch; ในขณะที่ ((ch = is.read ())! = -1) {bytestream.write (ch); } byte imgdata [] = bytestream.tobytearray (); bytestream.close (); กลับ Imgdata; -4. byte [] => inputstream
การแปลงระหว่างไบต์ [] เป็นอินพุทสตรีมนั้นง่าย: อินพุตสตรีมคือ = นิวบิทเทิร์เรย์บิ๊กสเตรม (นิวไบต์ [1024]);
5. inputStream => blob
API ที่สามารถให้ผ่าน Hibernate: Hibernate.CreateBlob (ใหม่ FileInputStream ("สามารถเป็นเส้นทางสำหรับรูปภาพ/ไฟล์ ฯลฯ "));
6. blob => inputstream
การถ่ายโอนบล็อกซึ่งสามารถเรียกได้โดยตรงผ่าน API ที่ให้ไว้: ใหม่ blob (). getBinaryStream ();
คลิปข้างต้นสามารถใช้เป็นข้อมูลอ้างอิงสำหรับผู้อ่าน
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!