Saya memiliki kolom gumpalan di tabel database saya, yang saya harus gunakan byte[]
dalam program Java saya sebagai pemetaan dan untuk menggunakan data ini saya harus mengubahnya menjadi InputStream
atau OutputStream
. Tetapi saya tidak tahu apa yang terjadi secara internal ketika saya melakukannya. Adakah yang bisa menjelaskan secara singkat apa yang terjadi ketika saya melakukan konversi ini?
java
bytearray
inputstream
outputstream
GuruKulki
sumber
sumber
Jawaban:
Anda membuat dan menggunakan stream array I / O byte sebagai berikut:
Dengan asumsi bahwa Anda menggunakan driver JDBC yang mengimplementasikan antarmuka JDBC Blob standar (tidak semua melakukannya), Anda juga dapat menghubungkan
InputStream
atauOutputStream
ke gumpalan menggunakan metodegetBinaryStream
dan 1 , dan Anda juga bisa mendapatkan dan mengatur byte secara langsung.setBinaryStream
(Secara umum, Anda harus mengambil langkah-langkah yang tepat untuk menangani pengecualian, dan menutup aliran. Namun, menutup
bis
danbos
dalam contoh di atas tidak diperlukan, karena tidak terkait dengan sumber daya eksternal apa pun; mis. Deskriptor file, soket, koneksi basis data.)1 -
setBinaryStream
Metode ini sangat rajin aktif. Sosok pergi.sumber
Saya berasumsi maksud Anda bahwa 'penggunaan' berarti membaca, tetapi apa yang akan saya jelaskan untuk kasus baca pada dasarnya dapat dibalik untuk kasus penulisan.
sehingga Anda berakhir dengan byte []. ini dapat mewakili segala jenis data yang mungkin memerlukan jenis konversi khusus (karakter, terenkripsi, dll). mari kita berpura-pura ingin menulis data ini seperti halnya ke file.
pertama Anda bisa membuat ByteArrayInputStream yang pada dasarnya adalah mekanisme untuk memasok byte ke sesuatu secara berurutan.
maka Anda bisa membuat FileOutputStream untuk file yang ingin Anda buat. ada banyak jenis InputStreams dan OutputStreams untuk berbagai sumber data dan tujuan.
terakhir Anda akan menulis InputStream ke OutputStream. dalam hal ini, array byte akan dikirim secara berurutan ke FileOutputStream untuk ditulis. Untuk ini saya sarankan menggunakan IOUtils
dan sebaliknya
jika Anda menggunakan cuplikan kode di atas, Anda harus menangani pengecualian dan saya sarankan Anda melakukan 'closes' di blok akhirnya.
sumber
kita dapat mengubah byte array [] menjadi aliran input dengan menggunakan ByteArrayInputStream
Untuk contoh lengkap silakan cek di sini http://www.onlinecodegeek.com/2015/09/how-to-convert-byte-into-inputstream.html
sumber
Tidak ada konversi antara InputStream / OutputStream dan byte yang mereka gunakan. Mereka dibuat untuk data biner, dan hanya membaca (atau menulis) byte satu per satu apa adanya.
Konversi harus terjadi ketika Anda ingin beralih dari byte ke char. Maka Anda perlu mengonversi menggunakan set karakter. Ini terjadi ketika Anda membuat String atau Reader dari byte, yang dibuat untuk data karakter.
sumber
sumber
Saya menyadari bahwa jawaban saya sudah sangat terlambat untuk pertanyaan ini, tetapi saya pikir komunitas ingin pendekatan yang lebih baru untuk masalah ini .
sumber
Saya pikir ini lebih baik karena Anda sudah memiliki OutputStream yang ada di objek respons. tidak perlu membuat OutputStream baru.
sumber