Java - Converter arquivo para InputStream

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.

Read more

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.

Read more

Matriz de bytes Java para InputStream

Como converter um byte [] em um InputStream usando Java ou Guava simples.

Read more

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á.