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:

A Quick Guide to Spring Cloud Consul
Java Program to Perform Uniform Binary Search
The Registration API becomes RESTful
Java Program to Implement Caesar Cypher
Các kiểu dữ liệu trong java
Spring Cloud – Securing Services
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Serialize Only Fields that meet a Custom Criteria with Jackson
Servlet 3 Async Support with Spring MVC and Spring Security
Convert Character Array to String in Java
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Tạo số và chuỗi ngẫu nhiên trong Java
Java Program to Implement CopyOnWriteArraySet API
Java Program to Implement Floyd-Warshall Algorithm
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
RestTemplate Post Request with JSON
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Spring Security – security none, filters none, access permitAll
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Java Program to Implement Sieve Of Sundaram
JUnit 5 for Kotlin Developers
Finding the Differences Between Two Lists in Java
Java Program to Represent Graph Using Adjacency Matrix
Spring Security Remember Me
Collection trong java
Java Program to Implement Levenshtein Distance Computing Algorithm
The Difference Between Collection.stream().forEach() and Collection.forEach()
Spring Boot - Enabling Swagger2
Java Program to Implement Red Black Tree
Guide to Java 8’s Collectors
Java InputStream to String