How to Convert an InputStream Into a String in Java

Rupam Yadav Feb 02, 2024
  1. Use Stream API to Convert an InputStream to a String
  2. Use ByteArrayOutputStream to Read or Convert an InputStream to String
  3. Use IOUtils.toString of Apache Commons to Read or Convert an InputStream to a String
How to Convert an InputStream Into a String in Java

In this tutorial, we will talk about how to convert an InputStream to a String in Java. An InputStream is a stream of bytes that can be further used to perform several tasks like reading. In general, it is a class that contains everything in bytes. If we want to convert this stream of bytes to any other type of data, we may have to use specific methods.

Here we will go through the several ways by which we can read or convert an InputStream into a string in Java

Use Stream API to Convert an InputStream to a String

We can convert an InputStream to a string using the Stream API that is a part of Java 8. InputStreamReader reads the inputStream and BufferedReader().lines() helps us to convert this InputStream into a stream of String. As we can see, Collectors.joining() is being used to join all the strings in the stream and then return a single string.

package com.company;

import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream inputStream = new FileInputStream("java/sampleFile.txt");

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
      Stream<String> streamOfString = new BufferedReader(inputStreamReader).lines();
      String streamToString = streamOfString.collect(Collectors.joining());

      System.out.println(streamToString);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Output:

This is a sample text file

Use ByteArrayOutputStream to Read or Convert an InputStream to String

We know that an InputStream is made up of bytes, and thus we can ByteArrayOutputStream class that converts the readInputStream into an array of bytes. After that, we can convert this array of bytes into a String using toString().

package com.company;

import java.io.*;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream readInputStream = new FileInputStream("java/sampleFile.txt");

      String encoding = "UTF-8";

      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      byte[] byteSize = new byte[1024];

      int length;
      while ((length = readInputStream.read(byteSize)) != -1) {
        byteArrayOutputStream.write(byteSize, 0, length);
      }

      System.out.println(byteArrayOutputStream.toString(encoding));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Output:

This is a sample text file

Use IOUtils.toString of Apache Commons to Read or Convert an InputStream to a String

To make our task easy, we can use the IOUtils.toString function included in the Apache Commons library. To use the Apache Commons Library, we can include this dependency in our project.

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

In the example below, first, we create an InputStream which is a text file, and then call the IOUtils.toString() method that takes an InputStream and the encoding to use to convert the stream. We are using UTF-8 encoding, which is universally used.

package com.company;

import java.io.*;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream inputStream = new FileInputStream("java/sampleFile.txt");

      String steamToString = IOUtils.toString(inputStream, "UTF-8");
      System.out.println(steamToString);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Output:

This is a sample text file
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Related Article - Java String

Related Article - Java IO