Stream in C# -opastus: StreamReader ja StreamWriter [esimerkki]
Mikä on C# Stream?
C#-tiedostotoiminnoissa streameja käytetään yleensä tiedostojen lukemiseen ja kirjoittamiseen. Virta on lisäkerros, joka luodaan sovelluksen ja tiedoston väliin. Tietovirtaa käytetään varmistamaan sujuvan tiedoston luku- ja kirjoitustoiminnot.
Virtoja käytetään yleensä luettaessa tietoja suurista tiedostoista. Tietovirtoja käyttämällä suurten tiedostojen tiedot jaetaan pieniksi paloiksi ja lähetetään streamiin. Nämä tietopalat voidaan sitten lukea sovelluksesta.
Syy sen jakamiseen pieniksi paloiksi johtuu suuren tiedoston yhdellä kertaa lukemisen tehokkuudesta. Jos lukisit tiedot esimerkiksi 100 Mt:n tiedostosta yhdellä kertaa, sovelluksesi voisi vain jumittua ja muuttua epävakaaksi. Paras tapa on sitten käyttää virtoja tiedostojen jakamiseen hallittaviksi paloiksi.
Joten kun tiedostolle suoritetaan kirjoitustoiminto, kirjoitettava data kirjoitetaan ensin virtaan. Virrasta tiedot kirjoitetaan sitten tiedostoon. Sama koskee lukutoimintoa. Lukutoiminnossa tiedot siirretään ensin tiedostosta streamiin. Tiedot luetaan sitten sovelluksesta streamin kautta. Katsotaanpa esimerkkiä siitä, kuinka voimme lukea ja kirjoittaa virtojen avulla.
Stream Reader
Stream-lukijaa käytetään tietojen lukemiseen tiedostosta streamien avulla. Tiedoston tiedot luetaan ensin streamiin. Tämän jälkeen sovellus lukee tiedot virrasta.
Esimerkissämme oletetaan, että meillä on D-asemassa tiedosto nimeltä Esimerkki.txt. Tiedosto on yksinkertainen tekstitiedosto ja siinä on 2 riviä alla olevan kuvan mukaisesti
- Guru99 – .Net
- Guru99 -C#
Esimerkkiämme luomme yksinkertaisen konsolisovelluksen ja työskentelemme tiedostovirtojen kanssa
Katsotaanpa esimerkkiä siitä, kuinka voimme käyttää virtoja datan lukemiseen tiedostosta. Kirjoita alla oleva koodi program.cs-tiedostoon.
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(); } } }
Koodin selitys: -
- Ensin julistamme stream-lukijaobjektin. Virranlukijaobjektia käytetään C#:ssa määrittämään stream tiedostosta sovellukseen. Tiedot työnnetään tiedostosta streamiin aina, kun dataa luetaan tiedostosta. Tiedosto.OpenText käytetään avaamaan tiedosto "Example.txt" vain luku -tilassa. Tiedoston käsittelijä lähetetään sitten stream-lukijaobjektiin.
- Seuraavaksi määrittelemme väliaikaisen muuttujan 's', jota käytetään kaikkien tiedostojen tietojen lukemiseen.
- Tämän jälkeen käytämme stream-lukijamenetelmää ReadLine jokaisen rivin lukemiseen stream-puskurista. Kun suoritamme tämän toiminta, jokainen rivi siirretään ensin tiedostosta puskuriin. Sitten merkkijono rivi siirretään puskurista muuttujaan 's'. Kirjoitamme sitten merkkijonon "s" sisällön konsoliin.
Kun yllä oleva koodi on asetettu ja projektia ajetaan käyttäen Visual Studio, saat alla olevan tulosteen.
Lähtö: -
Tulosteesta näet, että Stream Reader luki molemmat rivit tiedostosta. Lopuksi virrasta luetun merkkijonon rivit lähetettiin konsoliin.
Stream Writer
Virtakirjoitinta käytetään tietojen kirjoittamiseen tiedostoon streamien avulla. Sovelluksen tiedot kirjoitetaan ensin streamiin. Tämän jälkeen stream kirjoittaa tiedot tiedostoon. Katsotaanpa esimerkkiä siitä, kuinka voimme käyttää virtoja datan kirjoittamiseen tiedostosta. Kirjoita alla oleva koodi program.cs-tiedostoon.
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(); } } }
Koodin selitys: -
- Ensin julistamme stream writer -objektin. Stream writer -objektia käytetään C#:ssa virran määrittämiseen. Tietovirtaa käytetään sitten tietojen kirjoittamiseen sovelluksesta tiedostoon. Tiedot työnnetään sovelluksesta streamiin aina, kun tietoja on kirjoitettava. File.AppendText-komentoa käytetään tiedoston “Example.txt” avaamiseen lisäystilassa. Tiedoston käsittelijä lähetetään sitten stream writer -objektiin.
- Käytämme stream-kirjoitusmenetelmää Writeline kirjoittaaksesi rivin "Guru99 – ASP.Net" streamiin. Virrasta rivi kirjoitetaan sitten tiedostoon.
- Suljemme sitten stream-kirjoittimen tiedostoon kirjoittamisen jälkeen. Yleensä on hyvä käytäntö sulkea tiedostokäsittelijät, kun tiedostoa ei enää tarvita kirjoitustarkoituksiin.
- Lopuksi luemme tiedoston sisällön uudelleen ja kirjoitamme sen konsolin lokiin. Tällä tarkistetaan, onko rivi kirjoitettu tiedostoon.
Kun yllä oleva koodi on asetettu ja projektia ajetaan Visual Studiolla, saat alla olevan tulosteen.
Lähtö: -
Tulosteesta näet, että rivi “Guru99 – ASP.Net” lisättiin tiedostoon onnistuneesti. Kaikki 3 tekstiriviä näkyvät konsolissa.
Yhteenveto
- Virtoja käytetään välitasona sovelluksen ja tiedoston välillä.
- StreamReaderia käytetään aina, kun tiedot on luettava tiedostosta.
- Streamwriteriä käytetään aina, kun tietoja on kirjoitettava tiedostoon.