Преобразовать Содержимое ByteArrayInputStream В Строку
-
26-12-2019 - |
Вопрос
Я читаю этот пост но я что-то не улавливаю.Я видел этот но не видел подходящего примера преобразования 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.
.
Для генеракодицетагкода генеракодицетагкод дает общее количество байтов.
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