Czy możemy przekonwertować tablicę bajtów na InputStream w Javie?


131

Czy możemy przekonwertować tablicę bajtów na InputStream w Javie? Szukałem w Internecie, ale nie mogłem go znaleźć.

Mam metodę, która ma jako argument InputStream.

InputStream, cphktóry mam, jest zakodowany w base64, więc musiałem go zdekodować za pomocą

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

Jak teraz decodedBytesponownie przekonwertować na InputStream?


1
W przypadku tego rodzaju problemów bardzo przydatne jest łącze „Użyj” u góry stron dokumentacji interfejsu API.
Tom Hawtin - tackline

Odpowiedzi:



4

Jeśli używasz narzędzia Base64 Roberta Hardera , możesz wykonać:

InputStream is = new Base64.InputStream(cph);

Lub za pomocą środowiska JRE firmy Sun możesz:

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

Nie należy jednak polegać na tym, że ta klasa nadal będzie częścią środowiska JRE, a nawet nadal będzie robić to, co wydaje się robić dzisiaj. Sun mówi, żeby go nie używać.

Istnieją inne pytania dotyczące przepełnienia stosu dotyczące dekodowania Base64, takie jak to.


10
Nie używaj klasy słońca, która jest prywatna i nie powinna być używana, ponieważ może się zmienić w dowolnym momencie.
mP.

Zmienię odpowiedź, tak aby zawierała straszne ostrzeżenia. Kod w pytaniu jest już używany, BASE64Decoderprawdopodobniesun.misc.BASE64Decoder
Stephen Denne
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.