V operáciách so súbormi C # sa zvyčajne na čítanie a zápis do súborov používajú prúdy. Stream je ďalšia vrstva vytvorená medzi aplikáciou a súborom. Stream sa používa na zabezpečenie plynulých operácií čítania a zápisu do súboru.
Pri načítaní údajov z veľkých súborov sa zvyčajne používajú streamy. Použitím streamov sú údaje z veľkých súborov rozdelené na malé kúsky a odoslané do streamu. Tieto bloky údajov je potom možné načítať z aplikácie.
Dôvodom na rozdelenie na malé časti je vplyv na výkon čítania veľkého súboru naraz. Ak by ste mali čítať údaje z jedného súboru so 100 MB naraz, vaša aplikácia by mohla iba visieť a stať sa nestabilnou. Najlepším prístupom je potom použitie prúdov na rozdelenie súboru na zvládnuteľné bloky.
Takže keď sa vykoná operácia zápisu do súboru, dáta, ktoré sa majú zapísať, sa najskôr zapíšu do streamu. Z toku sa potom údaje zapíšu do súboru. To isté platí pre operáciu čítania. Pri operácii čítania sa dáta najskôr prenesú zo súboru do streamu. Údaje sa potom načítajú z aplikácie prostredníctvom streamu. Pozrime sa na príklad toho, ako môžeme čítať a písať pomocou streamov.
V tomto návode sa naučíte
- Stream Reader
- Spisovateľ streamu
Stream Reader
Čítačka prúdov sa používa na čítanie údajov zo súboru pomocou prúdov. Dáta zo súboru sa najskôr načítajú do streamu. Potom aplikácia načíta údaje z toku.
Pre náš príklad budeme predpokladať, že na jednotke D máme súbor s názvom Example.txt. Súbor bude jednoduchý textový súbor a bude mať 2 riadky, ako je uvedené nižšie
- Guru99 - .Net
- Guru99 -C #
Pre náš príklad vytvoríme jednoduchú konzolovú aplikáciu a budeme pracovať s prúdmi súborov
Pozrime sa na príklad toho, ako môžeme použiť prúdy na čítanie údajov zo súboru. Zadajte nasledujúci kód do súboru 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();}}}
Vysvetlenie kódu: -
- Najskôr deklarujeme objekt čítačky prúdov. Objekt čítačky prúdov sa v C # používa na definovanie toku zo súboru do aplikácie. Údaje sa zo súboru presunú do streamu vždy, keď sa zo súboru načítajú údaje. File.OpenText sa používa na otvorenie súboru „Example.txt“ v režime iba na čítanie. Obslužný program do súboru sa potom odošle do objektu čítačky prúdov.
- Ďalej definujeme dočasnú premennú 's', ktorá sa použije na načítanie všetkých údajov zo súboru.
- Potom použijeme metódu čítačky prúdov ReadLine na načítanie každého riadku z vyrovnávacej pamäte toku. Keď vykonáme túto operáciu, každý riadok sa najskôr prenesie zo súboru do medzipamäte. Potom sa reťazec prenesie z medzipamäte do premennej 's'. Potom napíšeme obsah reťazca 's' do konzoly.
Keď je nastavený vyššie uvedený kód a projekt je spustený pomocou Visual Studio, získate výstup uvedený nižšie.
Výkon:-
Z výstupu vidíte, že Stream Reader načítal oba riadky zo súboru. Nakoniec boli riadky reťazca načítané z toku odoslané do konzoly.
Spisovateľ streamu
Zapisovač prúdov sa používa na zápis údajov do súboru pomocou prúdov. Dáta z aplikácie sa najskôr zapíšu do streamu. Potom stream zapíše údaje do súboru. Pozrime sa na príklad toho, ako môžeme použiť prúdy na zápis údajov zo súboru. Zadajte nasledujúci kód do súboru 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();}}}
Vysvetlenie kódu: -
- Najskôr deklarujeme objekt zapisovača toku. Objekt zapisovača prúdu sa v C # používa na definovanie toku. Prúd sa potom použije na zápis údajov z aplikácie do súboru. Údaje sa z aplikácie presunú do streamu vždy, keď je potrebné údaje zapísať. Príkaz File.AppendText sa používa na otvorenie súboru „Example.txt“ v režime pridania. Obslužná rutina do súboru sa potom odošle do objektu zapisovača prúdov.
- Na zápis riadku „Guru99 - ASP.Net“ do streamu používame metódu zápisu streamu Writeline. Z prúdu sa potom riadok zapíše do súboru.
- Po zápise do súboru potom zapisovač prúdu zatvoríme. Obvykle je dobrým zvykom zavrieť obslužné rutiny súborov, keď súbor už nie je potrebný na účely zápisu.
- Na záver znova načítame obsah súboru a zapíšeme ho do protokolu konzoly. Toto kontroluje, či bol riadok zapísaný do súboru.
Keď je nastavený vyššie uvedený kód a projekt je spustený pomocou Visual Studio, získate výstup uvedený nižšie.
Výkon:-
Z výstupu vidíte, že do súboru bol úspešne pridaný riadok „Guru99 - ASP.Net“. V konzole sú viditeľné všetky 3 riadky textu.
Zhrnutie
- Prúdy sa používajú ako stredná úroveň medzi aplikáciou a súborom.
- StreamReader sa používa vždy, keď sa vyžaduje načítanie údajov zo súboru.
- Streamwriter sa používa vždy, keď je potrebné zapísať údaje do súboru.