เราสามารถแปลงอาร์เรย์ไบต์เป็น InputStream ใน Java ได้หรือไม่?


129

เราสามารถแปลงอาร์เรย์ไบต์เป็น InputStream ใน Java ได้หรือไม่? ฉันดูทางอินเทอร์เน็ต แต่หาไม่เจอ

ฉันมีวิธีการที่มี InputStream เป็นอาร์กิวเมนต์

InputStream cphฉันมีการเข้ารหัส base64 ดังนั้นฉันจึงต้องถอดรหัสโดยใช้

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(cph);

ตอนนี้ฉันจะแปลงdecodedBytesเป็นInputStreamอย่างไร


1
ลิงก์ "ใช้" ที่ด้านบนของหน้าเอกสาร API มีประโยชน์มากสำหรับปัญหาประเภทนี้
Tom Hawtin - tackline

คำตอบ:



4

ถ้าคุณใช้ยูทิลิตี้ Base64 ของ Robert Harder'sคุณสามารถทำได้:

InputStream is = new Base64.InputStream(cph);

หรือด้วย JRE ของดวงอาทิตย์คุณสามารถทำได้:

InputStream is = new
com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64DecoderStream(cph)

อย่างไรก็ตามอย่าพึ่งพาชั้นเรียนนั้นต่อไปเพื่อเป็นส่วนหนึ่งของ JRE หรือแม้กระทั่งดำเนินการต่อเพื่อทำสิ่งที่ดูเหมือนว่าจะทำในวันนี้ อาพูดว่าอย่าใช้มัน

มีคำถามเกี่ยวกับการโอเวอร์คล็อกแบบกองซ้อนอื่น ๆ เกี่ยวกับการถอดรหัส Base64 เช่นคำถามนี้


10
อย่าใช้คลาสของดวงอาทิตย์เป็นแบบส่วนตัวและไม่ควรใช้เนื่องจากสามารถเปลี่ยนแปลงได้ตลอดเวลา
mP

ฉันจะแก้ไขคำตอบเพื่อรวมคำเตือนที่น่ากลัว รหัสในคำถามที่มีอยู่แล้วโดยใช้BASE64Decoderซึ่งเป็นสันนิษฐานsun.misc.BASE64Decoder
สตีเฟ่น Denne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.