Uno stream è un flusso continuo di dati. In Java i flussi I/O vengono utilizzati per leggere da origini di input o scrivere su destinazioni di output come file. Forniscono un modo per accedere ai dati in sequenza. Il pacchetto java.io include classi per gestire sia flussi di byte che flussi di caratteri e anche per la conversione tra di loro.
carattere in lattice
- Flusso di ingresso: legge i dati dalla sorgente.
- Flusso di output: scrive i dati in una destinazione.
Quando utilizzare il flusso di caratteri su quello di byte:
In Java i caratteri vengono memorizzati utilizzando le convenzioni Unicode. Il flusso di caratteri è utile quando vogliamo elaborare file di testo. Questi file di testo possono essere elaborati carattere per carattere. La dimensione dei caratteri è generalmente di 16 bit.
Quando utilizzare il flusso di byte rispetto al flusso di caratteri:
L'orientamento al byte legge byte per byte. Un flusso di byte è adatto per elaborare dati grezzi come file binari.
prova catch block in Java
Punti chiave durante l'utilizzo e la gestione di uno qualsiasi dei flussi di cui sopra:
- Le classi del flusso di caratteri solitamente terminano con Reader/Writer mentre le classi del flusso di byte terminano con InputStream/OutputStream.
- I codici di esempio in questo articolo utilizzano flussi senza buffer che sono meno efficienti. Per prestazioni migliori li avvolgiamo comunemente con BufferedReader/BufferedWriter (flussi di caratteri) o BufferedInputStream/BufferedOutputStream (flussi di byte).
- Chiudi sempre i flussi dopo l'uso per liberare risorse ed evitare errori.
- I codici di cui sopra potrebbero non essere eseguiti nei compilatori online poiché i file potrebbero non esistere.
Flusso di personaggi
In Java i caratteri vengono memorizzati utilizzando le convenzioni Unicode. Il flusso di caratteri ci consente automaticamente di leggere/scrivere i dati carattere per carattere. Ad esempio FileReader e FileWriter sono flussi di caratteri utilizzati per leggere dall'origine e scrivere nella destinazione.
Flussi di personaggiEsempio
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null as we have not read anything FileReader sourceStream = null; try { // Reading from file sourceStream = new FileReader('/Users/mayanksolanki/Desktop/demo.rtf'); // Reading sourcefile and writing content to target file character by character. int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) System.out.println((char)temp); System.out.print('Program successfully executed'); } finally { if (sourceStream != null) sourceStream.close(); } } }
Produzione:
Scrive il contenuto nel file di destinazione carattere per carattere
Programma eseguito con successo
Flusso di byte
Un flusso di byte in Java è un flusso che gestisce l'input e l'output di dati binari grezzi a 8 bit. Viene utilizzato principalmente per leggere e scrivere dati non di testo come immagini audio video o qualsiasi file binario. Per esempio FileInputStream viene utilizzato per leggere dall'origine e FileOutputStream per scrivere nella destinazione.
char tostring java
Esempio:
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null ot objects for reading and writing to file FileInputStream sourceStream = null; FileOutputStream targetStream = null; try { // Passing the files via local directory sourceStream = new FileInputStream('/Users/mayanksolanki/Desktop/demo.rtf'); targetStream = new FileOutputStream('/Users/mayanksolanki/Desktop/democopy.rtf'); // Reading source file and writing content to file byte by byte int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) targetStream.write((byte)temp); System.out.print('Program successfully executed'); } // finally block that executes for sure where we are closing file connections to avoid memory leakage finally { if (sourceStream != null) sourceStream.close(); if (targetStream != null) targetStream.close(); } } }
Produzione:
Programma eseguito con successo
Differenze tra flusso di caratteri e flusso di byte
| Aspetto | Flusso di personaggi | Flusso di byte |
|---|---|---|
| Tipo di dati gestito | Caratteri Unicode a 16 bit (testo) | Dati grezzi a 8 bit (binari) |
| Le lezioni terminano con | Lettore/Scrittore | InputStream/OutputStream |
| Adatto per | File di testo Dati Unicode | File binari di immagini audio video |
| Conversione | Converte automaticamente i byte in caratteri | Nessuna conversione funziona con byte grezzi |
| Esempi | FileReader FileWriter | FileInputStream FileOutputStream |
Articolo correlato
- Java IO - Input/Output in Java con esempi