في تطوير برنامجنا ، غالبًا ما نستخدم التحويل المتبادل بين java.sql.blob ، byte [] ، و inputstream ، ولكن في API JDK ، لا نوفر لنا مباشرة واجهات برمجة التطبيقات المتاحة. شظايا البرنامج التالية تنفذ بشكل أساسي الاستخدام القابل للتبديل بينهما.
1. بايت [] => blob
يمكننا تنفيذ طريقة البيان التي توفرها السبات ، مثل:
org.hibernate.hibernate.hibernate.createBlob (New Byte [1024]) ؛
2. blob => byte []
في الوقت الحاضر ، لم يتم العثور على واجهة برمجة تطبيقات أفضل ، لذلك لا يمكنني تنفيذها بنفسي إلا. الأمثلة على النحو التالي:
/ ** * تحويل نوع blob إلى نوع صفيف البايت * param blob * regurn */ private byte [] blobtobytes (blob blob) {bufferedInputStream is = null ؛ حاول {is = جديد bufferedInputStream (blob.getBinaryStream ()) ؛ byte [] bytes = new byte [(int) blob.length ()] ؛ int len = bytes.length ؛ int الإزاحة = 0 ؛ int read = 0 ؛ بينما (الإزاحة <ly && (read = iS.Read (bytes ، offset ، len - offset))> = 0) {Offset += read ؛ } إرجاع بايت ؛ } catch (استثناء e) {return null ؛ } أخيرًا {try {is.close () ؛ هو = فارغ. } catch (ioException e) {return null ؛ }}}3. InputStream => Byte []
بايت خاص [] inputStreamTobyte (inputStream) يلقي ioException {bytearrayoutputstream bytestream = new BytearRayoutputStream () ؛ int ch ؛ بينما ((ch = is.read ())! = -1) {bytestream.write (ch) ؛ } byte imgdata [] = bytestream.tobytearray () ؛ bytestream.close () ؛ إرجاع Imgdata ؛ }4. بايت [] => inputStream
التحويل بين البايت [] إلى inputStream بسيط: inputStream هو = جديد bytearrayinputStream (بايت جديد [1024]) ؛
5. InputStream => blob
API التي يمكن توفيرها من خلال hibernate: hibernate.createBlob (جديد fileInputStream ("يمكن أن يكون مسارًا للصور/الملفات ، إلخ")) ؛
6. blob => inputStream
نقل المدونة ، والتي يمكن استدعاؤها مباشرة من خلال واجهة برمجة التطبيقات المقدمة: new Blob (). getBinaryStream () ؛
يمكن استخدام المقاطع أعلاه كمرجع للقراء.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!