Java - Converter arquivo para InputStream
1. Visão geral
Neste tutorial rápido, vamos mostrar comoconvert a File to an InputStream - primeiro usando Java simples e depois Guava e a biblioteca Apache Commons IO.
Este artigo faz parte dethe “Java – Back to Basic” series aqui no exemplo.
Leitura adicional:
Java Scanner
Tutorial e exemplos no Java Scanner - varra uma String, um arquivo ou o console, valide a entrada, encontre ou pule padrões.
Goiaba - Gravar no arquivo, ler do arquivo
Como gravar em um arquivo e ler um arquivo usando o suporte e os utilitários do Guava IO.
Matriz de bytes Java para InputStream
Como converter um byte [] em um InputStream usando Java ou Guava simples.
2. Converter usando Java
Podemos usarIO package de java para converter umFile emInputStreams diferente.
2.1. FileInputStream
Vamos começar com o primeiro esimplest one – using a 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
Vejamos outro, onde podemosuse 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
Finalmente, vamos ver comouse 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);
}
Observe que não estamos fechando o fluxo resultante nesses exemplos para fins de legibilidade.
3. Converter usando Guava
A seguir - vamos verthe Guava solution, usando um intermediárioByteSource:
@Test
public void givenUsingGuava_whenConvertingFileToInputStream_thenCorrect()
throws IOException {
File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = Files.asByteSource(initialFile).openStream();
}
4. Converter usando Commons IO
Finalmente - vamos olhar para uma solução usando 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);
}
E aí está -3 simple and clean solutions for opening a stream from a Java file.
5. Conclusão
Neste artigo, exploramos várias maneiras de converter aFile emInputStream usando diferentes bibliotecas. A implementação de todos esses exemplos e trechos de código pode ser encontradaover on GitHub - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.