Автор оригинала: 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 .