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:

Guide to java.util.concurrent.Future
Java Program to Check whether Graph is Biconnected
HttpClient 4 – Send Custom Cookie
Prevent Brute Force Authentication Attempts with Spring Security
Spring 5 and Servlet 4 – The PushBuilder
Tính kế thừa (Inheritance) trong java
Java Program to Solve any Linear Equations
Hướng dẫn Java Design Pattern – Adapter
Java Program to Implement Binomial Heap
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Hướng dẫn sử dụng luồng vào ra nhị phân trong Java
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
@Lookup Annotation in Spring
@DynamicUpdate with Spring Data JPA
Java Program to Implement Segment Tree
DynamoDB in a Spring Boot Application Using Spring Data
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Java Program to Implement Binary Heap
Lớp HashMap trong Java
Phương thức tham chiếu trong Java 8 – Method References
Guide to the Fork/Join Framework in Java
Java Program to Implement Network Flow Problem
Java Program to Represent Graph Using Adjacency Matrix
Spring Boot - Web Socket
How to Get a Name of a Method Being Executed?
Java Program to Implement the One Time Pad Algorithm
Java Program to Implement Efficient O(log n) Fibonacci generator
Injecting Prototype Beans into a Singleton Instance in Spring
Guide to java.util.concurrent.Locks
Java Program to Perform Complex Number Multiplication
Java Program to Perform LU Decomposition of any Matrix
Java Program to Implement Sorted Circular Doubly Linked List