Перейти к основному содержимому

Java — массив байтов для записи

· 2 мин. чтения

1. Обзор

В этом очень кратком руководстве мы обсудим, как преобразовать byte[] в Writer , используя простую Java, Guava и Commons IO.

2. С простой Java

Начнем с простого Java-решения:

@Test
public void givenPlainJava_whenConvertingByteArrayIntoWriter_thenCorrect()
throws IOException {
byte[] initialArray = "With Java".getBytes();
Writer targetWriter = new StringWriter().append(new String(initialArray));

targetWriter.close();

assertEquals("With Java", targetWriter.toString());
}

Обратите внимание, что мы преобразовали наш byte[] в Writer через промежуточную строку .

3. С гуавой

Далее — рассмотрим более сложное решение с Guava:

@Test
public void givenUsingGuava_whenConvertingByteArrayIntoWriter_thenCorrect()
throws IOException {
byte[] initialArray = "With Guava".getBytes();

String buffer = new String(initialArray);
StringWriter stringWriter = new StringWriter();
CharSink charSink = new CharSink() {
@Override
public Writer openStream() throws IOException {
return stringWriter;
}
};
charSink.write(buffer);

stringWriter.close();

assertEquals("With Guava", stringWriter.toString());
}

Обратите внимание, что здесь мы преобразовали byte[] в Writer с помощью CharSink .

4. С вводом-выводом Commons

Наконец, давайте проверим наше решение Commons IO:

@Test
public void givenUsingCommonsIO_whenConvertingByteArrayIntoWriter_thenCorrect()
throws IOException {
byte[] initialArray = "With Commons IO".getBytes();

Writer targetWriter = new StringBuilderWriter(
new StringBuilder(new String(initialArray)));

targetWriter.close();

assertEquals("With Commons IO", targetWriter.toString());
}

Примечание. Мы преобразовали наш byte[] в StringBuilderWriter с помощью StringBuilder .

5. Вывод

В этом коротком и точном руководстве мы проиллюстрировали 3 различных способа преобразования byte[] в Writer .

Код этой статьи доступен в репозитории GitHub .