Tutorial sullo streaming in C#: StreamReader e StreamWriter [Esempio]
Cos'è il flusso C#?
Nelle operazioni sui file C#, in genere vengono utilizzati i flussi per leggere e scrivere sui 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 sul file.
I flussi vengono normalmente utilizzati durante la lettura di dati da file di grandi dimensioni. Utilizzando i flussi, i dati di 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 cui lo suddividiamo in piccole parti è dovuto all'impatto sulle prestazioni della lettura di un file di grandi dimensioni in un colpo solo. Se dovessi leggere i dati, ad esempio, di 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 allo stream. I dati vengono quindi letti dall'applicazione tramite il flusso. Diamo un'occhiata a un esempio di come possiamo leggere e scrivere utilizzando i flussi.
Lettore di flussi
Il lettore di flussi viene utilizzato per leggere i dati da un file utilizzando i flussi. I dati del file vengono prima letti nel flusso. Successivamente l'applicazione legge i dati dal flusso.
Per il nostro esempio, supponiamo di avere un file nell'unità D chiamato Esempio.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 i flussi di file
Diamo un'occhiata a un esempio di come possiamo utilizzare i flussi per leggere i dati da un file. Inserisci 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, dichiariamo 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, definiamo una variabile temporanea "s" che verrà utilizzata per leggere tutti i dati dal file.
- Utilizziamo quindi il metodo di lettura del flusso ReadLine per leggere ogni riga dal buffer del flusso. Quando eseguiamo questo operazione, ogni riga verrà prima trasferita dal file al buffer. Quindi la stringa line verrà trasferita dal buffer alla variabile 's'. Quindi scriviamo il contenuto della stringa 's' nella console.
Quando viene impostato il codice precedente e il progetto viene eseguito utilizzando Di Visual Studio, otterrai l'output seguente.
Produzione:-
Dall'output, puoi vedere che lo Stream Reader legge entrambe le righe dal file. Infine le righe della stringa letta dallo stream venivano inviate alla Console.
Scrittore di flussi
Lo stream writer viene utilizzato per scrivere dati su un file utilizzando i flussi. I dati dell'applicazione vengono prima scritti nel flusso. Successivamente lo stream scrive i dati nel file. Diamo un'occhiata a un esempio di come possiamo utilizzare i flussi per scrivere dati da un file. Inserisci 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, dichiariamo 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 al 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 dello stream Writeline per scrivere la riga "Guru99 - ASP.Net" nello stream. Dal flusso, la riga verrà quindi scritta nel file.
- Chiudiamo quindi lo stream writer dopo aver scritto il file. Normalmente è una buona pratica chiudere i gestori di file quando il file non è più necessario per scopi di scrittura.
- Infine, leggiamo nuovamente il contenuto del file e lo scriviamo nel registro della console. Questo serve per verificare se la riga è stata scritta nel file.
Una volta impostato il codice sopra riportato e eseguito il progetto tramite Visual Studio, si otterrà l'output seguente.
Produzione:-
Dall'output, puoi vedere che la riga "Guru99 - ASP.Net" è stata aggiunta correttamente al file. Tutte e 3 le righe di testo possono essere visualizzate nella console.
Sommario
- I flussi vengono utilizzati come livello intermedio tra l'applicazione e il file.
- Uno StreamReader viene utilizzato ogni volta che è necessario leggere i dati da un file.
- Uno Streamwriter viene utilizzato ogni volta che è necessario scrivere dati su un file.