Java – Convert File to InputStream

1. Overview

In this quick tutorial, we’re going to show how to convert a File to an InputStream – first using plain Java and then 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 Using Java

We can use the IO package of java to convert a File to different InputStreams.

2.1. FileInputStream

Let’s start with the first and simplest one – using a FileInputStream:

@Test
public void givenUsingPlainJava_whenConvertingFileToInputStream_thenCorrect() 
  throws IOException {
    File initialFile = new File("src/main/resources/sample.txt");
    InputStream targetStream = new FileInputStream(initialFile);
}

2.2. DataInputStream

Let’s look at another one, where we can use DataInputStream to read binary or primitive data from a file:

@Test
public final void givenUsingPlainJava_whenConvertingFileToDataInputStream_thenCorrect() 
  throws IOException {
      final File initialFile = new File("src/test/resources/sample.txt");
      final InputStream targetStream = 
        new DataInputStream(new FileInputStream(initialFile));
}

2.3. SequenceInputStream

Finally, let’s also look at how to use SequenceInputStream to concatenate input stream of two files to a single InputStream:

@Test
public final void givenUsingPlainJava_whenConvertingFileToSequenceInputStream_thenCorrect() 
  throws IOException {
      final File initialFile = new File("src/test/resources/sample.txt");
      final File anotherFile = new File("src/test/resources/anothersample.txt");
      final InputStream targetStream = new FileInputStream(initialFile);
      final InputStream anotherTargetStream = new FileInputStream(anotherFile);
    
      InputStream sequenceTargetStream = 
        new SequenceInputStream(targetStream, anotherTargetStream);
}

Note that we’re not closing the resulting stream in these examples for legibility.

3. Convert Using Guava

Next – let’s see the Guava solution, using an intermediary ByteSource:

@Test
public void givenUsingGuava_whenConvertingFileToInputStream_thenCorrect() 
  throws IOException {
    File initialFile = new File("src/main/resources/sample.txt");
    InputStream targetStream = Files.asByteSource(initialFile).openStream();
}

4. Convert Using Commons IO

Finally – let’s look at a solution using Apache Commons IO:

@Test
public void givenUsingCommonsIO_whenConvertingFileToInputStream_thenCorrect() 
  throws IOException {
    File initialFile = new File("src/main/resources/sample.txt");
    InputStream targetStream = FileUtils.openInputStream(initialFile);
}

And there you have it – 3 simple and clean solutions for opening a stream from a Java file.

5. Conclusion

In this article, we explored various ways on how to convert a File to InputStream by using different libraries.
The implementation of all these examples and code snippets can be found over on GitHub – this is a Maven-based project, so it should be easy to import and run as it is.

Related posts:

Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Simplify the DAO with Spring and Java Generics
Converting String to Stream of chars
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Java Program to Implement ArrayList API
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Queue và PriorityQueue trong Java
Java Program to Implement Hopcroft Algorithm
Hướng dẫn sử dụng Java Reflection
Configuring a DataSource Programmatically in Spring Boot
Logging a Reactive Sequence
“Stream has already been operated upon or closed” Exception in Java
Biểu thức Lambda trong Java 8 – Lambda Expressions
Java Map With Case-Insensitive Keys
Introduction to Spring Cloud Stream
Java CyclicBarrier vs CountDownLatch
A Guide to the finalize Method in Java
Java Program to Find Hamiltonian Cycle in an UnWeighted Graph
Properties with Spring and Spring Boot
Spring Boot - Zuul Proxy Server and Routing
Chuyển đổi Array sang ArrayList và ngược lại
Apache Commons Collections Bag
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
How to Count Duplicate Elements in Arraylist
Guava CharMatcher
The Dining Philosophers Problem in Java
Stack Memory and Heap Space in Java
Guide to java.util.concurrent.Locks
Java Program to Find Inverse of a Matrix
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Spring Boot - Runners