convert-file-to-input-stream
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 Baeldung.
Further reading:
Java Scanner
Tutorial and examples on Java Scanner – scan a String, a File or the Console, validate the input, find or skip Patterns.
Guava – Write to File, Read from File
How to Write to File and Read from a File using the Guava IO support and utilities.
Java Byte Array to InputStream
How to convert a byte[] to an InputStream using plain Java or Guava.
2. Convert Using Java
We can use the IO package of java to convert a File to different InputStreams.
2.1. 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
@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
@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.