Можем ли мы преобразовать байтовый массив в InputStream в Java? - PullRequest
121 голосов
/ 26 ноября 2009

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

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

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

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

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

Ответы [ 2 ]

281 голосов
/ 26 ноября 2009

Использование ByteArrayInputStream:

InputStream is = new ByteArrayInputStream(decodedBytes);
4 голосов
/ 26 ноября 2009

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

InputStream is = new Base64.InputStream(cph);

Или с помощью солнечной JRE вы можете сделать:

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

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

Существуют и другие вопросы о переполнении стека относительно декодирования Base64, например this.

...