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:
Convert Time to Milliseconds in Java
The Order of Tests in JUnit
Netflix Archaius with Various Database Configurations
Guide to DelayQueue
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
Spring Boot - CORS Support
Lập trình đa luồng với CompletableFuture trong Java 8
String Initialization in Java
Hướng dẫn Java Design Pattern – Transfer Object
RestTemplate Post Request with JSON
Spring Boot - Google Cloud Platform
Java Program to Compute Discrete Fourier Transform Using Naive Approach
Spring Security OAuth Login with WebFlux
Comparing Arrays in Java
Java Program to Implement Expression Tree
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Constructor Dependency Injection in Spring
Java Program to Implement SimpeBindings API
Implementing a Runnable vs Extending a Thread
Comparing Two HashMaps in Java
Java Program to Implement Insertion Sort
Spring Boot Gradle Plugin
Introduction to Using FreeMarker in Spring MVC
Spring Boot - Building RESTful Web Services
Dockerizing a Spring Boot Application
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Java Program to Check whether Graph is a Bipartite using BFS
Handling URL Encoded Form Data in Spring REST
Java Program to Implement Iterative Deepening
Spring Boot - Interceptor
The DAO with Spring and Hibernate
Java Streams vs Vavr Streams