Автор оригинала: Eugen Paraschiv.
1. Обзор
В этом кратком руководстве мы покажем, как преобразовать Файл в InputStream – сначала с помощью простой Java, а затем Guava и библиотеки ввода-вывода Apache Commons.
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
Дальнейшее чтение:
Сканер Java
Гуава – Запись в файл, чтение из файла
Массив байтов Java в поток ввода
2. Преобразование С Помощью Java
Мы можем использовать Пакет ввода-вывода java для преобразования Файл к разным Входной поток s.
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 для чтения двоичных или примитивных данных из файла :
@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 для объединения входного потока из двух файлов в один Входной поток :
@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); }
И вот он у вас – 3 простых и чистых решения для открытия потока из файла Java .
5. Заключение
В этой статье мы рассмотрели различные способы преобразования файла в InputStream с использованием различных библиотек.
Реализацию всех этих примеров и фрагментов кода можно найти на GitHub
– это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.