C# fájlkezelés
A fájlkezeléshez a StreamReader és StreamWriter osztályokat használjuk.
Alapfogalmak
- Fájl: egy adatokat tartalmazó tárolóegység a háttértáron.
- Elérési út (path): a fájl helye a fájlrendszerben.
- Stream: adatfolyam, amelyen keresztül olvashatunk vagy írhatunk.
StreamReader – Fájl beolvasása
A StreamReader osztállyal fájlok tartalmát olvashatjuk be soronként.
using System;
using System.IO;
class Program
{
static void Main()
{
StreamReader sr = new StreamReader("adatok.txt");
while (!sr.EndOfStream)
{
string sor = sr.ReadLine();
Console.WriteLine(sor);
}
sr.Close();
}
}
Magyarázat
- A
ReadLine()egy sort olvas be a fájlból. - Az
EndOfStreamértéke akkor lesztrue, ha elértük a fájl végét. - A
Close()metódus lezárja a fájlt.
StreamWriter – Fájl írása
A StreamWriter segítségével fájlba írhatunk adatokat.
using System;
using System.IO;
class Program
{
static void Main()
{
StreamWriter sw = new StreamWriter("kimenet.txt");
sw.WriteLine("Első sor");
sw.WriteLine("Második sor");
sw.Close();
}
}
Hozzáfűzés meglévő fájlhoz
Ha a fájl végéhez szeretnénk írni (nem felülírni), akkor adjuk meg a true paramétert:
StreamWriter sw = new StreamWriter("naplo.txt", true);
sw.WriteLine("Új bejegyzés: " + DateTime.Now);
sw.Close();
CSV-fájl beolvasása és feldolgozása
A CSV (Comma-Separated Values) fájlok adatokat tartalmaznak, ahol az értékek , vagy ; jellel vannak elválasztva.
Példa cvs fájl tartalma:
Mark;22;Hort
Adam;30;Eger
Reka;22;Eger
using System;
using System.IO;
class Program
{
static void Main()
{
using (StreamReader sr = new StreamReader("adatok.csv"))
{
while (!sr.EndOfStream)
{
string sor = sr.ReadLine();
string[] mezok = sor.Split(';'); // vagy ',' ha az elválasztó vessző
Console.WriteLine($"Név: {mezok[0]}, Életkor: {mezok[1]}, Város: {mezok[2]}");
}
}
}
}
Feladatok
1. feladat
Készíts egy szamok.txt nevű fájlt a programod mappájában a következő tartalommal:
10
5
22
13
8
Olvasd be soronként a fájl tartalmát és számolj átlagot és összeget, majd írasd ki ezeket az értékeket. Extra: függvényekkel számol.
2. feladat
Készíts egy szemelyek.csv nevű fájlt a programod mappájában a következő tartalommal:
Mark;22;Hort
Adam;30;Eger
Reka;22;Eger
Anna;45;Budapest
Peter;29;Hort
Olvasd be soronként a fájl tartalmát:
- Összegezd az életkorokat, majd jelenítsd meg az összeget.
- Jelenítsd meg csak a Horti lakos neveit.