Java - Convertir un fichier en InputStream

Java - Convertir un fichier en InputStream

1. Vue d'ensemble

Dans ce rapide tutoriel, nous allons montrer commentconvert a File to an InputStream - d'abord en utilisant Java brut, puis Guava et la bibliothèque Apache Commons IO.

Cet article fait partie dethe “Java – Back to Basic” series ici par exemple.

Lectures complémentaires:

Scanner Java

Tutoriel et exemples sur Java Scanner - numérisez une chaîne, un fichier ou la console, validez l'entrée, recherchez ou ignore les modèles.

Read more

Goyave - écrire dans un fichier, lire à partir d'un fichier

Comment écrire dans un fichier et lire à partir d'un fichier à l'aide du support et des utilitaires de Guava IO.

Read more

Tableau d'octets Java à InputStream

Comment convertir un octet [] en InputStream à l'aide de Java ou de Guava.

Read more

2. Convertir à l'aide de Java

Nous pouvons utiliser lesIO package de java pour convertir unFile en différentsInputStreams.

2.1. FileInputStream

Commençons par les premiers etsimplest 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

Regardons un autre, où nous pouvonsuse 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

Enfin, voyons également commentuse 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);
}

Notez que nous ne fermons pas le flux résultant dans ces exemples pour plus de lisibilité.

3. Convertir à l'aide de la goyave

Ensuite, voyonsthe Guava solution, en utilisant un intermédiaireByteSource:

@Test
public void givenUsingGuava_whenConvertingFileToInputStream_thenCorrect()
  throws IOException {
    File initialFile = new File("src/main/resources/sample.txt");
    InputStream targetStream = Files.asByteSource(initialFile).openStream();
}

4. Convertir à l'aide de Commons IO

Enfin, examinons une solution utilisant 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);
}

Et là vous l'avez -3 simple and clean solutions for opening a stream from a Java file.

5. Conclusion

Dans cet article, nous avons exploré différentes manières de convertir unFile enInputStream en utilisant différentes bibliothèques. L'implémentation de tous ces exemples et extraits de code peut être trouvéeover on GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.