Java – Reader to String

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:

Logout in an OAuth Secured Application
Hướng dẫn Java Design Pattern – Facade
Hướng dẫn Java Design Pattern – Decorator
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Java Program to Implement RoleUnresolvedList API
Comparing Arrays in Java
Spring Boot - Introduction
Java Program to Implement Find all Back Edges in a Graph
Java Byte Array to InputStream
Overflow and Underflow in Java
Java Program to Implement Interpolation Search Algorithm
Removing Elements from Java Collections
Abstract class và Interface trong Java
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
How To Serialize and Deserialize Enums with Jackson
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Concrete Class in Java
A Guide to Queries in Spring Data MongoDB
Java Program to Implement Quick Sort with Given Complexity Constraint
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Functional Interface trong Java 8
Different Ways to Capture Java Heap Dumps
Prevent Brute Force Authentication Attempts with Spring Security
Java Program to Implement the Edmond’s Algorithm for Maximum Cardinality Matching
Java 8 Streams peek() API
Simplify the DAO with Spring and Java Generics
Java Program to Implement Fibonacci Heap
So sánh HashMap và HashSet trong Java
Java Program to Perform Searching Based on Locality of Reference
How to Get the Last Element of a Stream in Java?
Java Program to implement Dynamic Array