Java - Converti file in InputStream

1. Panoramica

In questo breve tutorial, mostreremo come convertire un file in un InputStream , prima utilizzando Java semplice e poi Guava e la libreria Apache Commons IO.

Questo articolo fa parte della serie " Java - Back to Basic " qui su Baeldung.

2. Convertire utilizzando Java

Possiamo usare il pacchetto IO di java per convertire un file in diversi InputStream .

2.1. FileInputStream

Cominciamo con il primo e più semplice, utilizzando 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

Diamo un'occhiata a un altro, dove possiamo usare DataInputStream per leggere dati binari o primitivi da un 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

Infine, vediamo anche come utilizzare SequenceInputStream per concatenare il flusso di input di due file in un singolo 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); }

Tieni presente che non stiamo chiudendo il flusso risultante in questi esempi per la leggibilità.

3. Converti usando Guava

Successivamente, vediamo la soluzione Guava , utilizzando un ByteSource intermedio :

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

4. Convertire utilizzando Commons IO

Infine, diamo un'occhiata a una soluzione che utilizza 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); }

Ed ecco fatto: 3 soluzioni semplici e pulite per l'apertura di un flusso da un file Java .

5. conclusione

In questo articolo, abbiamo esplorato vari modi su come convertire un file in InputStream utilizzando diverse librerie.

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata su GitHub: questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.