Stream in C# Vodič: StreamReader & StreamWriter [Primjer]
Što je C# Stream?
U C# operacijama s datotekama, tokovi se obično koriste za čitanje i pisanje u datoteke. Stream je dodatni sloj stvoren između aplikacije i datoteke. Tok se koristi za osiguravanje glatkih operacija čitanja i pisanja u datoteku.
Tokovi se obično koriste pri čitanju podataka iz velikih datoteka. Korištenjem tokova, podaci iz velikih datoteka rastavljaju se u male dijelove i šalju u tok. Ti se dijelovi podataka zatim mogu pročitati iz aplikacije.
Razlog razbijanja na male dijelove je učinak čitanja velike datoteke odjednom. Ako biste odjednom pročitali podatke iz, recimo, datoteke od 100 MB, vaša bi aplikacija mogla samo stati i postati nestabilna. Tada je najbolji pristup korištenje tokova za rastavljanje datoteke na dijelove kojima se može upravljati.
Dakle, kada se operacija pisanja izvodi u datoteku, podaci koji se trebaju pisati prvo se zapisuju u tok. Iz streama se podaci zatim zapisuju u datoteku. Isto vrijedi i za operaciju čitanja. U operaciji čitanja podaci se prvo prenose iz datoteke u tok. Podaci se zatim čitaju iz aplikacije putem streama. Pogledajmo primjer kako možemo čitati i pisati pomoću tokova.
Čitač toka
Čitač tokova se koristi za čitanje podataka iz datoteke pomoću tokova. Podaci iz datoteke prvo se učitavaju u tok. Nakon toga aplikacija čita podatke iz streama.
Za naš primjer, pretpostavit ćemo da imamo datoteku na D disku pod nazivom Example.txt. Datoteka će biti jednostavna tekstualna datoteka i imati 2 retka kao što je prikazano u nastavku
- Guru99 – .Net
- Guru99 -C#
Za naš primjer, izradit ćemo jednostavnu konzolnu aplikaciju i raditi s tokovima datoteka
Pogledajmo primjer kako možemo koristiti tokove za čitanje podataka iz datoteke. Unesite donji kod u datoteku 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(); } } }
Objašnjenje koda:-
- Prvo, deklariramo objekt čitača toka. Objekt čitača toka koristi se u C# za definiranje toka od datoteke do aplikacije. Podaci će biti gurnuti iz datoteke u tok kad god se podaci pročitaju iz datoteke. Datoteka.OpenText koristi se za otvaranje datoteke “Example.txt” u načinu rada samo za čitanje. Rukovatelj datoteke zatim se šalje objektu čitača toka.
- Zatim definiramo privremenu varijablu 's' koja će se koristiti za čitanje svih podataka iz datoteke.
- Zatim koristimo metodu čitača toka ReadLine za čitanje svakog retka iz međuspremnika toka. Kada ovo izvedemo operacija, svaki će redak prvo biti prebačen iz datoteke u međuspremnik. Tada će se linija niza prenijeti iz međuspremnika u varijablu 's'. Zatim upisujemo sadržaj niza 's' u konzolu.
Kada je gornji kod postavljen i projekt se izvodi pomoću Visual Studio, dobit ćete donji izlaz.
Izlaz:-
Iz izlaza možete vidjeti da je Stream Reader pročitao oba retka iz datoteke. Na kraju su redovi niza pročitani iz toka poslani u konzolu.
Stream Writer
Program za pisanje toka se koristi za pisanje podataka u datoteku pomoću tokova. Podaci iz aplikacije prvo se upisuju u stream. Nakon toga tok zapisuje podatke u datoteku. Pogledajmo primjer kako možemo koristiti tokove za pisanje podataka iz datoteke. Unesite donji kod u datoteku 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(); } } }
Objašnjenje koda:-
- Prvo, deklariramo objekt pisca toka. Objekt pisca toka koristi se u C# za definiranje toka. Tok se zatim koristi za pisanje podataka iz aplikacije u datoteku. Podaci će se gurnuti iz aplikacije u tok kad god je potrebno zapisati podatke. Naredba File.AppendText koristi se za otvaranje datoteke "Example.txt" u načinu dodavanja. Rukovatelj datotekom zatim se šalje objektu za pisanje toka.
- Koristimo metodu pisanja toka Writeline za pisanje retka "Guru99 – ASP.Net" u tok. Iz streama, redak će se tada zapisati u datoteku.
- Zatim zatvaramo pisač toka nakon pisanja u datoteku. Obično je dobra praksa zatvoriti rukovatelje datotekama kada datoteka više nije potrebna za pisanje.
- Konačno, ponovno čitamo sadržaj datoteke i upisujemo je u dnevnik konzole. Ovo služi da se provjeri je li redak upisan u datoteku.
Kada se gornji kod postavi i projekt se pokrene pomoću Visual Studija, dobit ćete donji izlaz.
Izlaz:-
Iz izlaza možete vidjeti da je redak “Guru99 – ASP.Net” uspješno dodan u datoteku. U konzoli se mogu vidjeti sva 3 reda teksta.
rezime
- Tokovi se koriste kao međurazina između aplikacije i datoteke.
- StreamReader se koristi kad god je potrebno pročitati podatke iz datoteke.
- Streamwriter se koristi kad god je potrebno upisati podatke u datoteku.