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, поэтому его легко импортировать и запускать как есть.