Java String to InputStream

1. Overview

In this quick tutorial, we’re going to look at how to convert a standard String to an InputStream 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.

2. Convert With Plain Java

Let’s start with a simple example using Java to do the conversion – using an intermediary byte array:

@Test
public void givenUsingPlainJava_whenConvertingStringToInputStream_thenCorrect() 
  throws IOException {
    String initialString = "text";
    InputStream targetStream = new ByteArrayInputStream(initialString.getBytes());
}

Note that the getBytes() method encodes this String using the platform’s default charset so to avoid undesirable behavior you can use getBytes(Charset charset) and control the encoding process.

3. Convert With Guava

Guava doesn’t provide a direct conversion method but does allow us to get a CharSource out of the String and easily convert it to a ByteSource. Then, obtaining the InputStream is easy:

@Test
public void givenUsingGuava_whenConvertingStringToInputStream_thenCorrect() 
  throws IOException {
    String initialString = "text";
    InputStream targetStream = 
      CharSource.wrap(initialString).asByteSource(StandardCharsets.UTF_8).openStream();
}

Note, however, that the asByteSource method is marked as @Beta. This means it can be removed in the future Guava release. We need to keep this in mind.

4. Convert With Commons IO

Finally, the Apache Commons IO library provides an excellent direct solution:

@Test
public void givenUsingCommonsIO_whenConvertingStringToInputStream_thenCorrect() 
  throws IOException {
    String initialString = "text";
    InputStream targetStream = IOUtils.toInputStream(initialString);
}

Finally – do note that we’re leaving the input stream open in these examples – don’t forget to close it when you’re done.

5. Conclusion

In this article, we presented three simple and concise ways to get an InputStream out of a simple String.

As always, the full source code is available over on GitHub.

Related posts:

Java Multi-line String
Getting Started with GraphQL and Spring Boot
Lập trình đa luồng với Callable và Future trong Java
Java Program to Implement LinkedHashSet API
Removing all Nulls from a List in Java
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Spring Boot Security Auto-Configuration
Receive email by java client
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Java Program to Solve Tower of Hanoi Problem using Stacks
An Intro to Spring Cloud Security
Java Stream Filter with Lambda Expression
Guide to Apache Commons CircularFifoQueue
Disable Spring Data Auto Configuration
Java Program to Implement Network Flow Problem
Java Program to Implement the MD5 Algorithm
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Implement Interpolation Search Algorithm
Getting the Size of an Iterable in Java
Java Program to Implement Find all Forward Edges in a Graph
Guide to Spring 5 WebFlux
Biến trong java
Jackson – Bidirectional Relationships
Testing in Spring Boot
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
An Example of Load Balancing with Zuul and Eureka
Java – Get Random Item/Element From a List
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Hướng dẫn Java Design Pattern – Abstract Factory
Guide to Java Instrumentation
Spring Security OAuth2 – Simple Token Revocation
Java Program to Find Transpose of a Graph Matrix