Læsning af Filer med StreamReader
Du kan åbne og læse filer ved hjælp af programmeringssproget C#.
For at læse en fil opretter vi et nyt StreamReader
-objekt. StreamReader
objektet tager stien til filen som parameter.
Begrebet "objekt" vil blive mere klart i de senere afsnit, men for forståelsens skyld – et objekt er blot en instans af en datatype, og StreamReader
er en datatype ligesom int
eller float
. Så værdierne 1
, 2.5f
og "Hello World"
kan teknisk set omtales som "objekter" af henholdsvis int-, float- og string-datatyperne.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Her repræsenterer fileVarName
navnet på variablen, hvor du gemmer StreamReader-objektet, og fullPath
skal være den fulde sti til filen som en streng.
For eksempel kan du åbne filen "text.txt" på Skrivebordet, som har stien C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Du kan også bruge implicit deklaration for at gøre syntaksen en smule kortere: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Antag, at filen text.txt
har følgende indhold:
text.txt
12345This is some example text
Et StreamReader
-objekt har en ReadLine
-metode, som læser én linje fra filen og returnerer den:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Output:
This
Metoden ReadLine
flytter automatisk markøren til næste linje, så når den kaldes igen, læser den den næste linje, hvis der er en. Ellers returnerer den blot null
(intet):
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
Output:
This
is
some
example
text
For at læse alle linjer fra en fil kan vi bruge en while
-løkke med en betingelse, der kontrollerer, om den næste linje er null
eller ej. Følgende er en enkel metode til at gøre dette:
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(); }
Output:
This
is
some
example
text
Du kan gøre ovenstående kode lidt mere overskuelig ved at anvende et trick; lad os derfor se nærmere på tildelingsudsagn. Et tildelingsudsagn har også en returværdi, som er den værdi, der tildeles. Dette kan illustreres med et eksempel:
index.cs
12int a; Console.WriteLine(a = 7);
Output:
7
Den returnerer 7
, fordi udsagnet a = 7
returnerer 7
, hvilket er den værdi, der tildeles til a
.
Denne viden kan anvendes til at udføre kreative handlinger, såsom at tildele den samme værdi til flere variabler i én enkelt erklæring:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Output:
9
9
9
Ved at bruge denne information kan fil-læsningskoden forkortes ved at fjerne unødvendig kode:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Inde i betingelsen brugte du først en tildelingssætning line = textFile.ReadLine()
, som automatisk opdaterer variablen line
og derefter kontrollerer, om den er null ud fra sætningens returværdi.
Efter at have læst filen skal du også lukke den ved hjælp af metoden Close
, ellers kan det potentielt forårsage hukommelseslækager, eller filen kan blive låst og utilgængelig fra andre steder, så længe programmet kører.
Den endelige kode vil se sådan ud:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 2.04
Læsning af Filer med StreamReader
Stryg for at vise menuen
Du kan åbne og læse filer ved hjælp af programmeringssproget C#.
For at læse en fil opretter vi et nyt StreamReader
-objekt. StreamReader
objektet tager stien til filen som parameter.
Begrebet "objekt" vil blive mere klart i de senere afsnit, men for forståelsens skyld – et objekt er blot en instans af en datatype, og StreamReader
er en datatype ligesom int
eller float
. Så værdierne 1
, 2.5f
og "Hello World"
kan teknisk set omtales som "objekter" af henholdsvis int-, float- og string-datatyperne.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Her repræsenterer fileVarName
navnet på variablen, hvor du gemmer StreamReader-objektet, og fullPath
skal være den fulde sti til filen som en streng.
For eksempel kan du åbne filen "text.txt" på Skrivebordet, som har stien C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Du kan også bruge implicit deklaration for at gøre syntaksen en smule kortere: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Antag, at filen text.txt
har følgende indhold:
text.txt
12345This is some example text
Et StreamReader
-objekt har en ReadLine
-metode, som læser én linje fra filen og returnerer den:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Output:
This
Metoden ReadLine
flytter automatisk markøren til næste linje, så når den kaldes igen, læser den den næste linje, hvis der er en. Ellers returnerer den blot null
(intet):
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
Output:
This
is
some
example
text
For at læse alle linjer fra en fil kan vi bruge en while
-løkke med en betingelse, der kontrollerer, om den næste linje er null
eller ej. Følgende er en enkel metode til at gøre dette:
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(); }
Output:
This
is
some
example
text
Du kan gøre ovenstående kode lidt mere overskuelig ved at anvende et trick; lad os derfor se nærmere på tildelingsudsagn. Et tildelingsudsagn har også en returværdi, som er den værdi, der tildeles. Dette kan illustreres med et eksempel:
index.cs
12int a; Console.WriteLine(a = 7);
Output:
7
Den returnerer 7
, fordi udsagnet a = 7
returnerer 7
, hvilket er den værdi, der tildeles til a
.
Denne viden kan anvendes til at udføre kreative handlinger, såsom at tildele den samme værdi til flere variabler i én enkelt erklæring:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Output:
9
9
9
Ved at bruge denne information kan fil-læsningskoden forkortes ved at fjerne unødvendig kode:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Inde i betingelsen brugte du først en tildelingssætning line = textFile.ReadLine()
, som automatisk opdaterer variablen line
og derefter kontrollerer, om den er null ud fra sætningens returværdi.
Efter at have læst filen skal du også lukke den ved hjælp af metoden Close
, ellers kan det potentielt forårsage hukommelseslækager, eller filen kan blive låst og utilgængelig fra andre steder, så længe programmet kører.
Den endelige kode vil se sådan ud:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Tak for dine kommentarer!