Можем ли мы преобразовать байтовый массив в InputStream в Java?


130

Можем ли мы преобразовать байтовый массив в InputStream в Java? Я искал в Интернете, но не нашел.

У меня есть метод с аргументом InputStream.

InputStream, который у cphменя есть, закодирован в base64, поэтому мне пришлось декодировать его, используя

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

Как мне decodedBytesснова преобразовать в InputStream?


1
Ссылка «Использовать» в верхней части страниц документации API очень полезна для такого рода проблем.
Том Хотин - tackline

Ответы:



4

Если вы используете утилиту Роберта Хардера Base64 , вы можете:

InputStream is = new Base64.InputStream(cph);

Или с помощью Sun JRE вы можете:

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

Однако не надейтесь на то, что этот класс продолжит быть частью JRE или даже продолжит делать то, что, кажется, делает сегодня. Солнце говорит не использовать его.

Есть и другие вопросы о декодировании Base64, например этот.


10
Не используйте класс sun, он частный и не должен использоваться, поскольку он может измениться в любое время.
М.П.

Я отредактирую свой ответ, включив в него ужасные предупреждения. Код в вопросе уже используется, BASE64Decoderпредположительноsun.misc.BASE64Decoder
Стивен Денн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.