Рубрики
Без рубрики

Java – Считыватель в строку

Как преобразовать считыватель в строку с помощью Java, Guava и библиотеки ввода-вывода Apache Commons.

Автор оригинала: Eugen Paraschiv.

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

Эта статья является частью серии “Java – назад к основному” здесь, в Баельдунге.

1. С Java

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

@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. С Гуавой

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

@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 IO

То же самое с 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 способа преобразования считывателя в простую строку. Обязательно ознакомьтесь с образцом на GitHub .