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

Java – чтение в строку

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

В этом кратком руководстве мы собираемся преобразовать Reader в String , используя обычную Java, Guava и библиотеку ввода-вывода Apache Commons.

Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.

1. С Java

Начнем с простого Java-решения, которое последовательно считывает символы из Reader :

@Test
public void givenUsingPlainJava_whenConvertingReaderIntoStringV1_thenCorrect()
throws IOException {
StringReader reader = new StringReader("text");
int intValueOfChar;
String targetString = "";
while ((intValueOfChar = reader.read()) != -1) {
targetString += (char) intValueOfChar;
}
reader.close();
}

Если есть много контента для чтения, решение для массового чтения будет работать лучше:

@Test
public void givenUsingPlainJava_whenConvertingReaderIntoStringV2_thenCorrect()
throws IOException {
Reader initialReader = new StringReader("text");
char[] arr = new char[8 * 1024];
StringBuilder buffer = new StringBuilder();
int numCharsRead;
while ((numCharsRead = initialReader.read(arr, 0, arr.length)) != -1) {
buffer.append(arr, 0, numCharsRead);
}
initialReader.close();
String targetString = buffer.toString();
}

2. С гуавой

Guava предоставляет утилиту, которая может выполнять преобразование напрямую :

@Test
public void givenUsingGuava_whenConvertingReaderIntoString_thenCorrect()
throws IOException {
Reader initialReader = CharSource.wrap("With Google Guava").openStream();
String targetString = CharStreams.toString(initialReader);
initialReader.close();
}

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

То же самое с Apache Commons IO — есть утилита ввода-вывода, способная выполнять прямое преобразование :

@Test
public void givenUsingCommonsIO_whenConvertingReaderIntoString_thenCorrect()
throws IOException {
Reader initialReader = new StringReader("With Apache Commons");
String targetString = IOUtils.toString(initialReader);
initialReader.close();
}

Вот и все — 4 способа превратить Reader в обычную строку. Обязательно ознакомьтесь с образцом на GitHub .