Table of Contents
In this quick tutorial we’re going to convert a Reader into a String using plain Java, Guava and the Apache Commons IO library.
This article is part of the “Java – Back to Basic” series here on VietMX’s Blog.
1. With Java
Let’s start with a simple Java solution that reads characters sequentially from the 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(); }
If there is a lot of content to read, a bulk-read solution will work better:
@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. With Guava
Guava provides a utility that can do the conversion directly:
@Test public void givenUsingGuava_whenConvertingReaderIntoString_thenCorrect() throws IOException { Reader initialReader = CharSource.wrap("With Google Guava").openStream(); String targetString = CharStreams.toString(initialReader); initialReader.close(); }
3. With Commons IO
Same with Apache Commons IO – there is an IO utility capable of performing the direct conversion:
@Test public void givenUsingCommonsIO_whenConvertingReaderIntoString_thenCorrect() throws IOException { Reader initialReader = new StringReader("With Apache Commons"); String targetString = IOUtils.toString(initialReader); initialReader.close(); }
And there you have it – 4 ways of transforming a Reader into a plain String. Make sure to check out the sample over on GitHub.
Related posts:
Java – InputStream to Reader
Convert Character Array to String in Java
Guide to Guava Multimap
Java Program to Find Inverse of a Matrix
Different Ways to Capture Java Heap Dumps
Java Program to Implement Find all Cross Edges in a Graph
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Python String splitlines()
Inject Parameters into JUnit Jupiter Unit Tests
A Guide to Java 9 Modularity
Java Timer
Exploring the Spring Boot TestRestTemplate
Setting the Java Version in Maven
Disable DNS caching
Spring Boot - Google Cloud Platform
Java Program to Implement Gale Shapley Algorithm
Introduction to Using FreeMarker in Spring MVC
Phương thức tham chiếu trong Java 8 – Method References
Giới thiệu Design Patterns
Intro to the Jackson ObjectMapper
Class Loaders in Java
Java Program to Implement Sorted Circular Doubly Linked List
New Features in Java 11
Send an email using the SMTP protocol
Java Program to Represent Graph Using Adjacency Matrix
Java Program to Implement Stack API
Java Program to Print only Odd Numbered Levels of a Tree
Why String is Immutable in Java?
Function trong Java 8
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Convert Hex to ASCII in Java
Python String lower()