Вопрос

Я читаю этот пост но я что-то не улавливаю.Я видел этот но не видел подходящего примера преобразования ByteArrayInputStream к String используя ByteArrayOutputStream.

Чтобы получить содержимое файла ByteArrayInputStream как String, использует ByteArrayOutputstream рекомендуется или есть более предпочтительный способ?

Я обдумывал этот пример и расширять ByteArrayInputStream и использовать Оформитель для увеличения функциональности во время выполнения.Есть ли интерес к тому, чтобы это было лучшим решением для использования ByteArrayOutputStream?

Это было полезно?

Решение

Генеракодицетагкод может прочитать из любого генеракодицетагкода и в конце выхода генеракодицетагкода.

Однако с генеракодицетагкодом проще:

int n = in.available();
byte[] bytes = new byte[n];
in.read(bytes, 0, n);
String s = new String(bytes, StandardCharsets.UTF_8); // Or any encoding.
.

Для генеракодицетагкода генеракодицетагкод дает общее количество байтов.


Ответ на комментарий: Использование BytearRayoutPuredStream

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[8192];
for (;;) {
    int nread = in.read(buf, 0, buf.length);
    if (nread <= 0) {
        break;
    }
    baos.write(buf, 0, nread);
}
in.close();
baos.close();
byte[] bytes = baos.toByteArray();
.

Здесь в может быть любой входной поток.

Другие советы

Почему никто не упомянул org.apache.commons.io.IOUtils?

import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;

String result = IOUtils.toString(in, StandardCharsets.UTF_8);

Всего одна строка кода.

Воспользуйся Scanner и передайте его конструктору следующее ByteArrayInputStream затем считайте данные с вашего сканера, проверьте этот пример :

ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(new byte[] { 65, 80 });
Scanner scanner = new Scanner(arrayInputStream);
scanner.useDelimiter("\\Z");//To read all scanner content in one String
String data = "";
if (scanner.hasNext())
    data = scanner.next();
System.out.println(data);

Используйте базовую кодировку 64

Предполагая, что вы получили свой ByTearRayoutPutStream:

ByteArrayOutputStream baos =...
String s = new String(Base64.Encoder.encode(baos.toByteArray()));
.

см. см. http://docs.orcle.com / javase / 8 / docs / api / java / util / base64.encoder.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top