Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Lese Filer med StreamReader | Datastrukturer og Filhåndtering
C# Utover Det Grunnleggende

bookLese Filer med StreamReader

Du kan åpne og lese filer ved hjelp av programmeringsspråket C#.

For å lese en fil, oppretter vi et nytt StreamReader-objekt. StreamReader-objektet tar inn filbanen som parameter.

Note
Merk

Begrepet "objekt" vil bli tydeligere i senere seksjoner, men for forståelsens skyld – et objekt er rett og slett en instans av en datatyp, og StreamReader er en datatype på samme måte som int eller float. Verdiene 1, 2.5f og "Hello World" kan teknisk sett omtales som "objekter" av henholdsvis int-, float- og string-datatypene.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Her representerer fileVarName variabelnavnet der du lagrer StreamReader-objektet, og fullPath skal være den fullstendige filbanen som en streng.

For eksempel kan du åpne filen "text.txt" på Skrivebordet med banen C:/Users/Admin/Desktop/text.txt:

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Merk

Du kan også bruke implisitt deklarasjon for å gjøre syntaksen litt kortere: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Anta at filen text.txt har følgende innhold:

text.txt

text.txt

copy
12345
This is some example text

Et StreamReader-objekt har en ReadLine-metode som leser én linje fra filen og returnerer den:

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Utdata:

This

Metoden ReadLine flytter automatisk markøren til neste linje, så når den kalles igjen, leser den neste linje hvis det finnes en, ellers returnerer den bare null (ingenting):

index.cs

index.cs

copy
12345678
var 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

Utdata:

This
is
some
example
text

For å lese alle linjene fra en fil kan vi bruke en while-løkke med en betingelse som sjekker om neste linje er null eller ikke. Følgende er en enkel måte å gjøre dette på:

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }

Utdata:

This
is
some
example
text

Du kan gjøre koden ovenfor litt ryddigere ved å bruke et triks, og for dette skal vi se nærmere på tilordningssetninger. En tilordningssetning har også en returverdi, som er verdien som blir tildelt. Dette kan illustreres med et eksempel:

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Utdata:

7

Den skriver ut 7 fordi uttrykket a = 7 returnerer 7, som er verdien som tildeles a.

Denne informasjonen kan brukes til å gjøre kreative ting, som å tildele samme verdi til flere variabler i én enkelt setning:

index.cs

index.cs

copy
123456789
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

Utdata:

9
9
9

Med denne informasjonen kan fil-lesekoden forenkles ved å fjerne unødvendig kode:

index.cs

index.cs

copy
1234567
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }

Inne i betingelsen brukte du først en tildelingssetning line = textFile.ReadLine() som automatisk oppdaterer variabelen line og deretter sjekker om den er null basert på returverdien fra setningen.

Etter at filen er lest må du også lukke den ved å bruke Close-metoden, ellers kan det potensielt føre til minnelekkasjer eller at filen blir låst og utilgjengelig fra andre steder så lenge programmet kjører.

Den endelige koden vil se slik ut:

index.cs

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Click or drag`n`drop items and fill in the blanks

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.04

bookLese Filer med StreamReader

Sveip for å vise menyen

Du kan åpne og lese filer ved hjelp av programmeringsspråket C#.

For å lese en fil, oppretter vi et nytt StreamReader-objekt. StreamReader-objektet tar inn filbanen som parameter.

Note
Merk

Begrepet "objekt" vil bli tydeligere i senere seksjoner, men for forståelsens skyld – et objekt er rett og slett en instans av en datatyp, og StreamReader er en datatype på samme måte som int eller float. Verdiene 1, 2.5f og "Hello World" kan teknisk sett omtales som "objekter" av henholdsvis int-, float- og string-datatypene.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Her representerer fileVarName variabelnavnet der du lagrer StreamReader-objektet, og fullPath skal være den fullstendige filbanen som en streng.

For eksempel kan du åpne filen "text.txt" på Skrivebordet med banen C:/Users/Admin/Desktop/text.txt:

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Merk

Du kan også bruke implisitt deklarasjon for å gjøre syntaksen litt kortere: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Anta at filen text.txt har følgende innhold:

text.txt

text.txt

copy
12345
This is some example text

Et StreamReader-objekt har en ReadLine-metode som leser én linje fra filen og returnerer den:

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Utdata:

This

Metoden ReadLine flytter automatisk markøren til neste linje, så når den kalles igjen, leser den neste linje hvis det finnes en, ellers returnerer den bare null (ingenting):

index.cs

index.cs

copy
12345678
var 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

Utdata:

This
is
some
example
text

For å lese alle linjene fra en fil kan vi bruke en while-løkke med en betingelse som sjekker om neste linje er null eller ikke. Følgende er en enkel måte å gjøre dette på:

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }

Utdata:

This
is
some
example
text

Du kan gjøre koden ovenfor litt ryddigere ved å bruke et triks, og for dette skal vi se nærmere på tilordningssetninger. En tilordningssetning har også en returverdi, som er verdien som blir tildelt. Dette kan illustreres med et eksempel:

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Utdata:

7

Den skriver ut 7 fordi uttrykket a = 7 returnerer 7, som er verdien som tildeles a.

Denne informasjonen kan brukes til å gjøre kreative ting, som å tildele samme verdi til flere variabler i én enkelt setning:

index.cs

index.cs

copy
123456789
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

Utdata:

9
9
9

Med denne informasjonen kan fil-lesekoden forenkles ved å fjerne unødvendig kode:

index.cs

index.cs

copy
1234567
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }

Inne i betingelsen brukte du først en tildelingssetning line = textFile.ReadLine() som automatisk oppdaterer variabelen line og deretter sjekker om den er null basert på returverdien fra setningen.

Etter at filen er lest må du også lukke den ved å bruke Close-metoden, ellers kan det potensielt føre til minnelekkasjer eller at filen blir låst og utilgjengelig fra andre steder så lenge programmet kjører.

Den endelige koden vil se slik ut:

index.cs

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Click or drag`n`drop items and fill in the blanks

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 6
some-alt