1. Vue d'ensemble
Dans ce rapide tutoriel, nous allons montrer comment convertir un fichier en InputStream - d'abord en utilisant Java brut, puis Guava et la bibliothèque Apache Commons IO.
Cet article fait partie de la série « Java - Back to Basic » ici sur Baeldung.
2. Convertir à l'aide de Java
Nous pouvons utiliser le package IO de java pour convertir un fichier en différents InputStream .
2.1. FileInputStream
Commençons par le premier et le plus simple - en utilisant un 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 pouvons utiliser DataInputStream pour lire des données binaires ou primitives à partir d'un fichier :
@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 comment utiliser SequenceInputStream pour concaténer le flux d'entrée de deux fichiers en un seul 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, voyons la solution Guava , en utilisant un ByteSource intermédiaire :
@Test public void givenUsingGuava_whenConvertingFileToInputStream_thenCorrect() throws IOException { File initialFile = new File("src/main/resources/sample.txt"); InputStream targetStream = Files.asByteSource(initialFile).openStream(); }
4. Conversion à 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 voilà - 3 solutions simples et propres pour ouvrir un flux à partir d'un fichier Java .
5. Conclusion
Dans cet article, nous avons exploré différentes manières de convertir un fichier en InputStream à l'aide de différentes bibliothèques.
L'implémentation de tous ces exemples et extraits de code peut être trouvée sur GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.