How to convert File to InputStream in Java

May 16, 2020 No comments Java IO Conversions File InputStream

1. Introduction

In this article, we are going to present several ways on how to convert File to InputStream in Java. This tutorial will cover solutions using plain Java, Guava, and Apache Commons IO library.

If you are looking for more Java I/O related articles, check the following links:

2. File to InputStream using plain Java

Plain Java provides a simple straightforward solution using FileInputStream that could be converted to DataInputStream.

2.1. Using FileInputStream

The following example shows how to use FileInputStream that let us read raw bytes from a file:

package com.frontbackend.java.io.conversions.toinputstream.fromfile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileToInputStreamUsingFileInputStream {

    public static void main(String[] args) throws IOException {
        File file = new File("/tmp/input.txt");
        InputStream inputStream = new FileInputStream(file);
    }
}

2.2. Using DataInputStream

DataInputStream allows us to read Java primitives like int, float, long, etc. from InputStream instead of only bytes. To create DataInputStream we use constructor with InputStream as a parameter:

package com.frontbackend.java.io.conversions.toinputstream.fromfile;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileToInputStreamUsingDataInputStream {

    public static void main(String[] args) throws IOException {
        File file = new File("/tmp/input.txt");
        InputStream inputStream = new DataInputStream(new FileInputStream(file));
    }
}

3. Convert File to InputStream with Guava

In the next solution we use Guava library that comes with many utility classes for IO operations:

package com.frontbackend.java.io.conversions.toinputstream.fromfile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import com.google.common.io.Files;

public class FileToInputStreamUsingGuava {

    public static void main(String[] args) throws IOException {
        File file = new File("/tmp/input.txt");

        InputStream inputStream = Files.asByteSource(file)
                                       .openStream();
    }
}

In this example first, we use the ByteSource object that is responsible for reading bytes from the file. Then we use method openStream() that opens a new InputStream for reading from this ByteSource.

4. File to InputStream conversion using Apache Commons IO library

Apache Commons IO is one of the Java library dedicated to IO processing. The library provides special utility class FileUtils that give us a one-line solution to convert File to InputStream:

package com.frontbackend.java.io.conversions.toinputstream.fromfile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.FileUtils;

public class FileToInputStreamUsingFileUtils {

    public static void main(String[] args) throws IOException {
        File file = new File("/tmp/input.txt");

        InputStream inputStream = FileUtils.openInputStream(file);
    }
}

5. Conclusion

In this article, we illustrated various ways on how to convert File to InputStream in Java. The solution in plain Java is pretty straightforward but we can also use libraries that are dedicated to IO processing.

The implementation of all examples used in this article is available under GitHub repository.

{{ message }}

{{ 'Comments are closed.' | trans }}