Tiedostojen Lukeminen StreamReader-Luokalla
Voit avata ja lukea tiedostoja C#-ohjelmointikielellä.
Tiedoston lukemista varten luodaan uusi StreamReader
-olio. StreamReader
olio ottaa tiedoston polun parametrina.
Käsite "olio" selkeytyy myöhemmissä osioissa, mutta ymmärtämisen kannalta – olio on yksinkertaisesti tietotyypin ilmentymä, ja StreamReader
on tietotyyppi aivan kuten int
tai float
. Esimerkiksi arvot 1
, 2.5f
ja "Hello World"
voidaan teknisesti kutsua int-, float- ja string-tietotyyppien "olioiksi".
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Tässä fileVarName
edustaa muuttujan nimeä, johon tallennat StreamReader-olion, ja fullPath
tarkoittaa tiedoston koko polkua merkkijonona.
Esimerkiksi voit avata tiedoston "text.txt" työpöydältä, jonka polku on C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Voit myös käyttää implisiittistä määrittelyä tehdäksesi syntaksista hieman lyhyemmän: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Oletetaan, että tiedostossa text.txt
on seuraava sisältö:
text.txt
12345This is some example text
StreamReader
-oliossa on ReadLine
-metodi, joka lukee yhden rivin tiedostosta ja palauttaa sen:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Tuloste:
This
ReadLine
-metodi siirtää automaattisesti kohdistimen seuraavalle riville, joten kun sitä kutsutaan uudelleen, se lukee seuraavan rivin, jos sellainen on olemassa. Muussa tapauksessa se palauttaa null
(ei mitään):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Tuloste:
This
is
some
example
text
Kaikkien rivien lukemiseen tiedostosta voidaan käyttää while
-silmukkaa, jonka ehtona tarkistetaan, onko seuraava rivi null
vai ei. Seuraavassa on yksinkertainen tapa toteuttaa tämä:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Tuloste:
This
is
some
example
text
Yllä olevaa koodia voi tehdä hieman siistimmäksi käyttämällä erästä kikkaa, joten tarkastellaanpa sijoituslauseita. Sijoituslauseella on myös palautusarvo, joka on sille annettu arvo. Tämä voidaan ymmärtää esimerkin avulla:
index.cs
12int a; Console.WriteLine(a = 7);
Tuloste:
7
Tulostaa 7
, koska lauseke a = 7
palauttaa arvon 7
, joka on muuttujaan a
asetettava arvo.
Tätä tietoa voi hyödyntää esimerkiksi asettamalla saman arvon usealle muuttujalle yhdellä lauseella:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Tuloste:
9
9
9
Tämän tiedon avulla voit muokata tiedostonluku-koodia lyhyemmäksi poistamalla tarpeettoman koodin:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Ehtolauseessa käytettiin ensin sijoituslausetta line = textFile.ReadLine()
, joka päivittää automaattisesti line
-muuttujan ja tarkistaa sitten, onko se null lausekkeen palautusarvosta.
Tiedoston lukemisen jälkeen se täytyy myös sulkea Close
-metodilla, muuten se voi mahdollisesti aiheuttaa muistivuotoja tai tiedosto voi jäädä lukituksi ja estää pääsyn muista paikoista niin kauan kuin ohjelma on käynnissä.
Lopullinen koodi näyttää tältä:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.04
Tiedostojen Lukeminen StreamReader-Luokalla
Pyyhkäise näyttääksesi valikon
Voit avata ja lukea tiedostoja C#-ohjelmointikielellä.
Tiedoston lukemista varten luodaan uusi StreamReader
-olio. StreamReader
olio ottaa tiedoston polun parametrina.
Käsite "olio" selkeytyy myöhemmissä osioissa, mutta ymmärtämisen kannalta – olio on yksinkertaisesti tietotyypin ilmentymä, ja StreamReader
on tietotyyppi aivan kuten int
tai float
. Esimerkiksi arvot 1
, 2.5f
ja "Hello World"
voidaan teknisesti kutsua int-, float- ja string-tietotyyppien "olioiksi".
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Tässä fileVarName
edustaa muuttujan nimeä, johon tallennat StreamReader-olion, ja fullPath
tarkoittaa tiedoston koko polkua merkkijonona.
Esimerkiksi voit avata tiedoston "text.txt" työpöydältä, jonka polku on C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Voit myös käyttää implisiittistä määrittelyä tehdäksesi syntaksista hieman lyhyemmän: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Oletetaan, että tiedostossa text.txt
on seuraava sisältö:
text.txt
12345This is some example text
StreamReader
-oliossa on ReadLine
-metodi, joka lukee yhden rivin tiedostosta ja palauttaa sen:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Tuloste:
This
ReadLine
-metodi siirtää automaattisesti kohdistimen seuraavalle riville, joten kun sitä kutsutaan uudelleen, se lukee seuraavan rivin, jos sellainen on olemassa. Muussa tapauksessa se palauttaa null
(ei mitään):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Tuloste:
This
is
some
example
text
Kaikkien rivien lukemiseen tiedostosta voidaan käyttää while
-silmukkaa, jonka ehtona tarkistetaan, onko seuraava rivi null
vai ei. Seuraavassa on yksinkertainen tapa toteuttaa tämä:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Tuloste:
This
is
some
example
text
Yllä olevaa koodia voi tehdä hieman siistimmäksi käyttämällä erästä kikkaa, joten tarkastellaanpa sijoituslauseita. Sijoituslauseella on myös palautusarvo, joka on sille annettu arvo. Tämä voidaan ymmärtää esimerkin avulla:
index.cs
12int a; Console.WriteLine(a = 7);
Tuloste:
7
Tulostaa 7
, koska lauseke a = 7
palauttaa arvon 7
, joka on muuttujaan a
asetettava arvo.
Tätä tietoa voi hyödyntää esimerkiksi asettamalla saman arvon usealle muuttujalle yhdellä lauseella:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Tuloste:
9
9
9
Tämän tiedon avulla voit muokata tiedostonluku-koodia lyhyemmäksi poistamalla tarpeettoman koodin:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Ehtolauseessa käytettiin ensin sijoituslausetta line = textFile.ReadLine()
, joka päivittää automaattisesti line
-muuttujan ja tarkistaa sitten, onko se null lausekkeen palautusarvosta.
Tiedoston lukemisen jälkeen se täytyy myös sulkea Close
-metodilla, muuten se voi mahdollisesti aiheuttaa muistivuotoja tai tiedosto voi jäädä lukituksi ja estää pääsyn muista paikoista niin kauan kuin ohjelma on käynnissä.
Lopullinen koodi näyttää tältä:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Kiitos palautteestasi!