Перейти к основному содержимому

Java — конвертировать файл в InputStream

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы собираемся показать, как преобразовать файл в InputStream — сначала с помощью простой Java, а затем Guava и библиотеки ввода-вывода Apache Commons.

Эта статья является частью серии « Java — Back to Basics » здесь, на ForEach.

2. Конвертировать с помощью Java

Мы можем использовать пакет ввода -вывода Java для преобразования файла в разные входные потоки .

2.1. FileInputStream

Начнем с первого и самого простого — с помощью 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

Давайте рассмотрим другой метод, в котором мы можем использовать DataInputStream для чтения двоичных или примитивных данных из файла :

@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

Наконец, давайте также посмотрим, как использовать SequenceInputStream для объединения входного потока двух файлов в один 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);
}

Обратите внимание, что в этих примерах мы не закрываем результирующий поток для удобочитаемости.

3. Конвертировать с помощью гуавы

Далее посмотрим решение Guava , используя посредника 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. Преобразование с использованием Commons IO

Наконец, давайте рассмотрим решение с использованием 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);
}

И вот оно. Три простых и понятных решения для открытия потока из файла Java.

5. Вывод

В этой статье мы рассмотрели различные способы преобразования файла в InputStream с использованием разных библиотек.

Реализацию всех этих примеров и фрагментов кода можно найти на GitHub . Это проект на основе Maven, поэтому его легко импортировать и запускать как есть.