C# fájlok kezelése

11. osztály 11.évf_c# C# programozás Programozás

Adatok beolvasása fájlból

A fájlok olvasásához a System,IO osztályt fogjuk használni, tehát ezt a program elején importálni kell! Using System.IO. A C# adatfolyamot használ a ki és bemeneti műveletekhez. (FileStream) A FileStream úgy működik, hogy meg kell adni neki első paraméternek a fájl nevét, elérési útját. Ha egy mappában van a programmal, akkor elég a nevét. Ha nem, akkor többféle megoldás is van:
FileStream fs = new FileStream(@”C:\mappa\mappa2\adatok.txt”, FileMode.Open);
Vagy:
FileStream fs = new FileStream(„C:\\mappa\\mappa2\\adatok.txt”, FileMode.Open);

A FileMode segítségével adjuk meg, mit akarunk az adott fájllal.

  • Create Létrehoz egy új fájlt, ha már létezik, a tartalmát kitörli.
  • CreateNew Ugyanaz, mint az előző, de ha már létezik a fájl, akkor kivételt dob.
  • Open Megnyit egy fájl, ha nem létezik, kivételt dob.
  • OpenOrCreate Ugyanaz, mint az előző, de ha nem létezik, akkor létrehozza a fájlt.
  • Append Megnyit egy fájlt, és automatikusan a végére pozicionál. Ha nem létezik, létrehozza. (hozzáfűzés tulajdonképpen)
  • Truncate Megnyit egy létező fájlt, és törli a tartalmát. Ebben a módban a fájl tartalmát nem lehet olvasni (egyébként kivételt dob).

A programunk egy logikai fájlnévvel fog dolgozni, ez a StreamReader résznél látható. A StreamReader sr = new StreamReader(fajltartalma); sorral kapcsoljuk össze a fizikai és a logikai fájlt.

Másik lehetőség a File.ReadAllLines metódus a fájl teljes tartalmát beolvassa és visszaadja string tömbként, a sorokat a tömb külön elemekként kezeli. Ezt a módszert akkor célszerű használni, ha a teljes fájlt szeretnénk beolvasni. Azonban ha a fájl túl nagy, akkor az egész fájl beolvasása memóriaproblémákat okozhat, és csökkentheti a program teljesítményét. „Párja” a File.WriteAllLines.

Példa: Hozzunk létre egy új txt fájlt teszt.txt néven! Írjunk bele pár szót, majd írjuk ki az adatokat a fájlba! Ellenőrzésként olvassuk be a fájl tartalmát!

2. Példa: Készítsünk egy txt fájlt, például autómárkákkal, majd a programmal beolvassuk a tartalmát. A fájlnak a futtatható programunk  mellett kell lennie, vagy teljes elérési utat kell megadnunk. Visual Studio-ban például hozzáadhatunk egy „Text File”-t a projekthez (jobb klikk a jobb oldali panelben, majd Add New Item), ezután a fájlon jobb gombbal kattintva Properties, és a Copy To Output Directory sorban válasszuk a Copy Always lehetőséget!

Hibakezelés

A hibakezelés elég fontos mozzanat, mert amatőrségre vall, ha a program a „gyári” hibaüzeneteket dobja fel, vagy esetleg lefagy. A try és a catch utasítással lehet elkapni, és lekezelni a hibákat. A try részbe írunk például egy fájl beolvasást, a catch részbe pedig írhatunk saját hibaüzenetet, ha például a keresett fájl nem található.

A leggyakoribb hibaüzenetek fájlkezeléskor. A try után több catch is használható!

Adatok kiírása fájlba

3. példa: Ebben a példában előállítunk 10 darab, 0-50 közötti véletlen számot, majd kiírjuk őket a képernyőre és fájlba is!

4. példa: Tanulók nevének és informatika jegyük átlagának bekérése, majd mentése fájlba. Elég 5db diák adatát bekérni, a jegyek átlaga legyen 3 tizedesjegy pontos. A neveket és a jegyeket egy tömbben tároljuk.

5. Példa :

A következő feladatban írassuk ki a képernyőre az előzőben létrehozott fájl tartalmát (adatok.txt), és számoljuk ki a számok átlagát is!
Létrehozunk egy 5 elemű tömböt, ebbe fogjuk kiolvasni az adatok.txt sorait! Utána ezeken a tömbelemeken végigmegyünk egyesével, és szétszedjük őket! A szóközök számát fogjuk megszámolni, mivel a 2. szóköz után jönnek az átlagok. Ezek string típusúak, tehát ha számolni is akarunk velük, akkor vissza kell alakítani őket double-re! Utána már csak átlagot kell számolni, össze kell adni a számokat, és elosztani öttel. A tömb minden egyes eleme után a szovegesatlag és a db változót alapra (üresre) állítjuk, az összeghez pedig hozzáadjuk az adott sor átlagának értékét.

Fájl törlése, hozzáfűzés fájlhoz, fájl tartalmának beolvasása