Bestanden Lezen Met StreamReader
Je kunt bestanden openen en lezen met behulp van de programmeertaal C#.
Voor het lezen van een bestand maken we een nieuw StreamReader
-object aan. Het StreamReader
object ontvangt het pad van het bestand.
De term "object" zal in latere secties duidelijker worden, maar voor nu: een object is simpelweg een instantie van een gegevenstype, en StreamReader
is een gegevenstype net als int
of float
. Dus de waarden 1
, 2.5f
en "Hello World"
kunnen technisch gezien worden aangeduid als "objecten" van respectievelijk de int-, float- en string-gegevenstypen.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Hier staat fileVarName
voor de variabelenaam waarin het StreamReader-object wordt opgeslagen, en fullPath
is het volledige pad van het bestand als een string.
Bijvoorbeeld, om een bestand "text.txt" op het bureaublad te openen met het pad C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
U kunt ook impliciete declaratie gebruiken om de syntaxis iets korter te maken: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Stel dat het bestand text.txt
de volgende inhoud heeft:
text.txt
12345This is some example text
Een StreamReader
-object heeft een ReadLine
-methode die één regel uit het bestand leest en retourneert:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Uitvoer:
This
De methode ReadLine
verplaatst de cursor automatisch naar de volgende regel, zodat bij een volgende aanroep de volgende regel wordt gelezen als die er is; anders geeft deze simpelweg null
(niets) terug:
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
Uitvoer:
This
is
some
example
text
Voor het lezen van alle regels uit een bestand kan de while
-lus worden gebruikt met een voorwaarde die controleert of de volgende regel null
is of niet. Hieronder staat een eenvoudige methode om dit te doen:
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(); }
Uitvoer:
This
is
some
example
text
De bovenstaande code kan iets netter worden gemaakt met een truc; daarvoor bekijken we de toekenningsuitspraken. Een toekenningsuitspraak heeft ook een retourwaarde, namelijk de waarde die wordt toegekend. Dit kan worden verduidelijkt met een voorbeeld:
index.cs
12int a; Console.WriteLine(a = 7);
Uitvoer:
7
Het resultaat is 7
omdat de instructie a = 7
de waarde 7
retourneert, wat de waarde is die aan a
wordt toegekend.
Deze informatie kan worden gebruikt om op creatieve wijze dezelfde waarde aan meerdere variabelen toe te wijzen in één enkele instructie:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Uitvoer:
9
9
9
Met deze informatie kan de code voor het lezen van bestanden worden aangepast om deze korter te maken door overbodige code te verwijderen:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Binnen de voorwaarde werd eerst een toewijzingsinstructie gebruikt line = textFile.ReadLine()
, waarmee de variabele line
automatisch wordt bijgewerkt en vervolgens wordt gecontroleerd of deze null is op basis van de geretourneerde waarde van de instructie.
Na het lezen van het bestand moet het ook worden gesloten met de methode Close
, anders kan dit mogelijk geheugenlekken veroorzaken of kan het bestand vergrendeld raken en ontoegankelijk worden voor andere processen zolang het programma actief is.
De uiteindelijke code ziet er als volgt uit:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.04
Bestanden Lezen Met StreamReader
Veeg om het menu te tonen
Je kunt bestanden openen en lezen met behulp van de programmeertaal C#.
Voor het lezen van een bestand maken we een nieuw StreamReader
-object aan. Het StreamReader
object ontvangt het pad van het bestand.
De term "object" zal in latere secties duidelijker worden, maar voor nu: een object is simpelweg een instantie van een gegevenstype, en StreamReader
is een gegevenstype net als int
of float
. Dus de waarden 1
, 2.5f
en "Hello World"
kunnen technisch gezien worden aangeduid als "objecten" van respectievelijk de int-, float- en string-gegevenstypen.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Hier staat fileVarName
voor de variabelenaam waarin het StreamReader-object wordt opgeslagen, en fullPath
is het volledige pad van het bestand als een string.
Bijvoorbeeld, om een bestand "text.txt" op het bureaublad te openen met het pad C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
U kunt ook impliciete declaratie gebruiken om de syntaxis iets korter te maken: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Stel dat het bestand text.txt
de volgende inhoud heeft:
text.txt
12345This is some example text
Een StreamReader
-object heeft een ReadLine
-methode die één regel uit het bestand leest en retourneert:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Uitvoer:
This
De methode ReadLine
verplaatst de cursor automatisch naar de volgende regel, zodat bij een volgende aanroep de volgende regel wordt gelezen als die er is; anders geeft deze simpelweg null
(niets) terug:
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
Uitvoer:
This
is
some
example
text
Voor het lezen van alle regels uit een bestand kan de while
-lus worden gebruikt met een voorwaarde die controleert of de volgende regel null
is of niet. Hieronder staat een eenvoudige methode om dit te doen:
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(); }
Uitvoer:
This
is
some
example
text
De bovenstaande code kan iets netter worden gemaakt met een truc; daarvoor bekijken we de toekenningsuitspraken. Een toekenningsuitspraak heeft ook een retourwaarde, namelijk de waarde die wordt toegekend. Dit kan worden verduidelijkt met een voorbeeld:
index.cs
12int a; Console.WriteLine(a = 7);
Uitvoer:
7
Het resultaat is 7
omdat de instructie a = 7
de waarde 7
retourneert, wat de waarde is die aan a
wordt toegekend.
Deze informatie kan worden gebruikt om op creatieve wijze dezelfde waarde aan meerdere variabelen toe te wijzen in één enkele instructie:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Uitvoer:
9
9
9
Met deze informatie kan de code voor het lezen van bestanden worden aangepast om deze korter te maken door overbodige code te verwijderen:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Binnen de voorwaarde werd eerst een toewijzingsinstructie gebruikt line = textFile.ReadLine()
, waarmee de variabele line
automatisch wordt bijgewerkt en vervolgens wordt gecontroleerd of deze null is op basis van de geretourneerde waarde van de instructie.
Na het lezen van het bestand moet het ook worden gesloten met de methode Close
, anders kan dit mogelijk geheugenlekken veroorzaken of kan het bestand vergrendeld raken en ontoegankelijk worden voor andere processen zolang het programma actief is.
De uiteindelijke code ziet er als volgt uit:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Bedankt voor je feedback!