Fájlkezelés¶
A System.IO.File osztály egyszerű szövegfájlok írására és olvasására használható. A Python with open(...) szerkezete mögött is hasonló erőforrás-kezelés áll. A példákban a relatív útvonal a program aktuális munkakönyvtárához viszonyul.
Fájl írása¶
Lista kiírása fájlba¶
WriteAllLines minden elem után sortörést ír. Nagy fájlhoz a StreamWriter előnyös, mert soronként írhatunk:
A using gondoskodik az író lezárásáról akkor is, ha hiba történik.
Fájl olvasása¶
if (File.Exists("nevek.txt"))
{
string teljesTartalom = File.ReadAllText("nevek.txt");
string[] sorok = File.ReadAllLines("nevek.txt");
Console.WriteLine($"{sorok.Length} sor: {teljesTartalom}");
}
A ReadAllLines az egész fájlt memóriába tölti. Nagy fájlhoz a File.ReadLines soronkénti bejárása alkalmas:
Fájlinformációk és hibák¶
FileInfo info = new("nevek.txt");
if (info.Exists)
{
Console.WriteLine($"Méret: {info.Length} bájt");
Console.WriteLine($"Teljes út: {info.FullName}");
}
Egy fájl a létezés ellenőrzése után is eltűnhet, vagy nem olvasható jogosultság miatt. A kivételeket ott kezeljük, ahol érdemben tudunk reagálni:
try
{
string szoveg = File.ReadAllText("nevek.txt");
Console.WriteLine(szoveg);
}
catch (FileNotFoundException)
{
Console.WriteLine("A fájl nem található.");
}
catch (UnauthorizedAccessException)
{
Console.WriteLine("Nincs jogosultság a fájl olvasásához.");
}
CSV beolvasása¶
Egyszerű, idézőjelet és pontosvesszőt nem tartalmazó gyakorlóadat esetén a Split(';') elegendő:
foreach (string sor in File.ReadLines("diakok.csv").Skip(1))
{
string[] oszlopok = sor.Split(';');
if (oszlopok.Length != 2 || !int.TryParse(oszlopok[1], out int kor))
{
Console.WriteLine($"Hibás sor: {sor}");
continue;
}
Console.WriteLine($"{oszlopok[0]}: {kor} éves");
}
A Skip(1) átugorja a fejlécet (System.Linq szükséges, amit a modern .NET konzolprojekt általában automatikusan importál). Valódi CSV-ben idézőjelek, sortörések és elválasztójelek is lehetnek az adatokon belül; ahhoz CSV-feldolgozó könyvtárat használjunk.
Feladatok¶
- Írj öt nevet egy fájlba, majd olvasd vissza listába és írd ki őket!
- Olvass be egy
név;pontszámformátumú gyakorló CSV-t! Csak az érvényes sorokat dolgozd fel, és számítsd ki az átlagot.