Table of Contents
In this quick tutorial we’re going to take a look at converting an InputStream to a Reader using Java, then Guava and finally Apache Commons IO.
This article is part of the “Java – Back to Basic” series here on VietMX’s Blog.
1. With Java
First, let’s look at the simple Java solution – using the readily available InputStreamReader:
@Test
public void givenUsingPlainJava_whenConvertingInputStreamIntoReader_thenCorrect()
throws IOException {
InputStream initialStream = new ByteArrayInputStream("With Java".getBytes());
Reader targetReader = new InputStreamReader(initialStream);
targetReader.close();
}
2. With Guava
Next – let’s take a look at the Guava solution – using an intermediary byte array and String:
@Test
public void givenUsingGuava_whenConvertingInputStreamIntoReader_thenCorrect()
throws IOException {
InputStream initialStream = ByteSource.wrap("With Guava".getBytes()).openStream();
byte[] buffer = ByteStreams.toByteArray(initialStream);
Reader targetReader = CharSource.wrap(new String(buffer)).openStream();
targetReader.close();
}
Note that the Java solution is simpler than this approach.
3. With Commons IO
Finally – the solution using Apache Commons IO – also using an intermediary String:
@Test
public void givenUsingCommonsIO_whenConvertingInputStreamIntoReader_thenCorrect()
throws IOException {
InputStream initialStream = IOUtils.toInputStream("With Commons IO");
byte[] buffer = IOUtils.toByteArray(initialStream);
Reader targetReader = new CharSequenceReader(new String(buffer));
targetReader.close();
}
And there you have it – 3 quick ways to convert the input stream to a Java Reader. Make sure to check out the sample over on GitHub.
Related posts:
A Custom Data Binder in Spring MVC
Converting Iterator to List
Giới thiệu Google Guice – Dependency injection (DI) framework
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Ways to Iterate Over a List in Java
Lớp lồng nhau trong java (Java inner class)
Java Program to Implement Hamiltonian Cycle Algorithm
Spring Boot - Twilio
Java Program to Implement Self Balancing Binary Search Tree
Java – Reader to Byte Array
An Intro to Spring Cloud Security
Marker Interface trong Java
Spring Boot - Tomcat Port Number
Java Program to Implement Park-Miller Random Number Generation Algorithm
Spring 5 and Servlet 4 – The PushBuilder
Spring Data MongoDB – Indexes, Annotations and Converters
HttpClient Timeout
Consumer trong Java 8
Limiting Query Results with JPA and Spring Data JPA
CyclicBarrier in Java
Java Program to Implement AA Tree
Enum trong java
Java – Reader to String
Semaphore trong Java
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Guide to @JsonFormat in Jackson
Implementing a Runnable vs Extending a Thread
Java Program to Solve the 0-1 Knapsack Problem
Spring Boot - File Handling
Jackson – Change Name of Field
Java Program to Perform Searching Based on Locality of Reference
Spring REST with a Zuul Proxy