Können wir ein Byte-Array in Java in einen InputStream konvertieren?


129

Können wir ein Byte-Array in Java in einen InputStream konvertieren? Ich habe im Internet gesucht, konnte es aber nicht finden.

Ich habe eine Methode, die einen InputStream als Argument hat.

Der InputStream, den cphich habe, ist base64-codiert, daher musste ich ihn mit decodieren

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

Wie konvertiere ich jetzt decodedByteswieder zu InputStream?


1
Der Link "Verwenden" oben auf den API-Dokumentseiten ist für diese Art von Problemen sehr nützlich.
Tom Hawtin - Tackline

Antworten:



4

Wenn Sie das Base64-Dienstprogramm von Robert Harder verwenden , können Sie Folgendes tun:

InputStream is = new Base64.InputStream(cph);

Oder mit Sun's JRE können Sie Folgendes tun:

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

Verlassen Sie sich jedoch nicht darauf, dass diese Klasse weiterhin Teil der JRE ist oder auch weiterhin das tut, was sie heute zu tun scheint. Sun sagt, es nicht zu benutzen.

Es gibt andere Fragen zum Stapelüberlauf zur Base64-Decodierung, z. B. diese.


10
Verwenden Sie nicht die Sonnenklasse, die privat ist und nicht verwendet werden sollte, da sie sich jederzeit ändern kann.
mP.

Ich werde meine Antwort so bearbeiten, dass sie schlimme Warnungen enthält. Der Code in der Frage wird bereits verwendet, BASE64Decoderwas vermutlich istsun.misc.BASE64Decoder
Stephen Denne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.