Nelle operazioni sui file C #, normalmente vengono usati i flussi per leggere e scrivere nei file. Uno stream è un livello aggiuntivo creato tra un'applicazione e un file. Il flusso viene utilizzato per garantire operazioni di lettura e scrittura fluide nel file.
I flussi vengono normalmente utilizzati durante la lettura di dati da file di grandi dimensioni. Utilizzando i flussi, i dati da file di grandi dimensioni vengono suddivisi in piccoli blocchi e inviati al flusso. Questi blocchi di dati possono quindi essere letti dall'applicazione.
Il motivo per suddividerlo in piccoli blocchi è dovuto all'impatto sulle prestazioni della lettura di un file di grandi dimensioni in una sola volta. Se dovessi leggere i dati, ad esempio, da un file da 100 MB in una sola volta, la tua applicazione potrebbe bloccarsi e diventare instabile. L'approccio migliore è quindi utilizzare i flussi per suddividere il file in blocchi gestibili.
Pertanto, quando viene eseguita un'operazione di scrittura su file, i dati da scrivere vengono prima scritti nel flusso. Dal flusso, i dati vengono quindi scritti nel file. Lo stesso vale per l'operazione di lettura. Nell'operazione di lettura, i dati vengono prima trasferiti dal file al flusso. I dati vengono quindi letti dall'applicazione tramite il flusso. Diamo un'occhiata a un esempio di come possiamo leggere e scrivere usando i flussi.
In questo tutorial imparerai-
- Stream Reader
- Stream Writer
Stream Reader
Il lettore di flussi viene utilizzato per leggere i dati da un file utilizzando flussi. I dati del file vengono prima letti nel flusso. Successivamente l'applicazione legge i dati dal flusso.
Per il nostro esempio, supporremo di avere un file nell'unità D chiamato Example.txt. Il file sarà un semplice file di testo e avrà 2 righe come mostrato di seguito
- Guru99 - .Net
- Guru99 -C #
Per il nostro esempio, creeremo una semplice applicazione Console e lavoreremo con Flussi di file
Diamo un'occhiata a un esempio di come possiamo usare i flussi per leggere i dati da un file. Immettere il codice seguente nel file program.cs.
using System;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{static void Main(string[] args){String path = @"D:\Example.txt";using (StreamReader sr = File.OpenText(path)){String s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}}Console.ReadKey();}}}
Spiegazione del codice: -
- Innanzitutto, stiamo dichiarando un oggetto lettore di flusso. L'oggetto lettore di flusso viene utilizzato in C # per definire un flusso dal file all'applicazione. I dati verranno inviati dal file al flusso ogni volta che i dati vengono letti dal file. Il File.OpenText viene utilizzato per aprire il file "Example.txt" in modalità di sola lettura. Il gestore del file viene quindi inviato all'oggetto lettore di flusso.
- Successivamente, stiamo definendo una variabile temporanea 's' che verrà utilizzata per leggere tutti i dati dal file.
- Quindi utilizziamo il metodo di lettura del flusso ReadLine per leggere ogni riga dal buffer del flusso. Quando eseguiamo questa operazione, ogni riga verrà prima trasferita dal file al buffer. Quindi la riga della stringa verrà trasferita dal buffer alla variabile 's'. Quindi scriviamo il contenuto della stringa 's' nella console.
Quando il codice precedente è impostato e il progetto viene eseguito utilizzando Visual Studio, otterrai l'output seguente.
Produzione:-
Dall'output, puoi vedere che Stream Reader legge entrambe le righe dal file. Infine, le righe della stringa letta dallo stream sono state inviate alla Console.
Stream Writer
Lo stream writer viene utilizzato per scrivere dati su un file utilizzando gli stream. I dati dell'applicazione vengono prima scritti nel flusso. Dopodiché il flusso scrive i dati nel file. Diamo un'occhiata a un esempio di come possiamo usare i flussi per scrivere dati da un file. Immettere il codice seguente nel file program.cs.
using System;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{static void Main(string[] args){String path = @"D:\Example.txt";using (StreamWriter sr = File.AppendText(path)){sr.WriteLine("Guru99 - ASP.Net");sr.Close();Console.WriteLine(File.ReadAllText(path));}Console.ReadKey();}}}
Spiegazione del codice: -
- Innanzitutto, stiamo dichiarando un oggetto stream writer. L'oggetto stream writer viene utilizzato in C # per definire un flusso. Il flusso viene quindi utilizzato per scrivere i dati dall'applicazione nel file. I dati verranno inviati dall'applicazione al flusso ogni volta che è necessario scrivere i dati. Il comando File.AppendText viene utilizzato per aprire il file "Example.txt" in modalità di aggiunta. Il gestore del file viene quindi inviato all'oggetto stream writer.
- Stiamo utilizzando il metodo di scrittura del flusso Writeline per scrivere la riga "Guru99 - ASP.Net" nel flusso. Dallo stream, la riga verrà quindi scritta nel file.
- Quindi chiudiamo lo stream writer dopo aver scritto nel file. Normalmente è buona norma chiudere i gestori di file quando il file non è più necessario per la scrittura.
- Infine, stiamo leggendo di nuovo il contenuto del file e lo stiamo scrivendo nel log della console. Questo serve per verificare se la riga è stata scritta nel file.
Quando il codice precedente è impostato e il progetto viene eseguito utilizzando Visual Studio, otterrai l'output seguente.
Produzione:-
Dall'output, puoi vedere che la riga "Guru99 - ASP.Net" è stata aggiunta correttamente al file. Tutte le 3 righe di testo possono essere visualizzate nella console.
Sommario
- I flussi vengono utilizzati come livello intermedio tra l'applicazione e il file.
- Un StreamReader viene utilizzato ogni volta che è necessario leggere i dati da un file.
- Uno Streamwriter viene utilizzato ogni volta che i dati devono essere scritti su un file.