4. osa Failitöötlus.

Failitöötlus C# keeles toimub kasutades klasse, mis on määratud System.IO ruumidesse. Antud koodis kasutatavad klassid on:

  • StreamWriter — andmete kirjutamiseks faili.
  • StreamReader — andmete lugemiseks failist.
  • File.ReadAllLines — failist kõikide ridade lugemiseks järjendina.
OskusÕpitud tegevus
FailikirjutusStreamWriter, WriteLine()
FaililugemineStreamReader, ReadToEnd(), File.ReadAllLines()
Vigade käsitleminetry-catch
AndmestruktuuridList<string>: lisamine, muutmine, kustutamine
Failitee kasutaminePath.Combine, AppDomain.CurrentDomain.BaseDirectory
Otsing ja salvestusContains(), WriteAllLines()

—————————————————————————————-

  1. Andmete kirjutamine faili
public static void Kirjuta_failisse()
{
    try
    {
        string path = Path.Combine(@"..\..\..\Kuud.txt"); // Faili tee
        StreamWriter text = new StreamWriter(path, true); // true = lisamine faili lõppu
        Console.WriteLine("Sisesta mingi tekst: "); // Küsi kasutajalt sisestust
        string lause = Console.ReadLine(); // Loe sisestatud tekst
        text.WriteLine(lause); // Kirjuta tekst faili
        text.Close(); // Sulge fail
    }
    catch (Exception)
    {
        Console.WriteLine("Mingi viga failiga"); // Kui viga, siis prindi veateade
    }
}

—————————————————————————————-

StreamWriter(path, true) — avab faili, et kirjutada andmeid faili lõppu.

text.WriteLine(lause) — kirjutab sisestatud teksti faili.

text.Close() — sulgeb faili pärast andmete kirjutamist.

—————————————————————————————-

2.Andmete lugemine failist

Lugemine_fail() meetod loeb faili sisu ja prindib selle konsooli:

public static void Lugemine_fail(string failinimi)
{
    try
    {
        string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, failinimi); // Faili tee
        StreamReader text = new StreamReader(path); // Avab faili lugemiseks
        string laused = text.ReadToEnd(); // Loeb kogu faili sisu
        text.Close(); // Sulgeb faili
        Console.WriteLine(laused); // Prindib faili sisu ekraanile
    }
    catch (Exception)
    {
        Console.WriteLine("Mingi viga failiga, ei saa faili lugeda"); // Kui viga, siis prindi veateade
    }
}

Faili ridadelt andmete lugemine ja töötlemine

public static List<string> RidadeLugemine(string failinimi2)
{
    List<string> kuude_list = new List<string>(); // Loome nimekirja ridadest
    try
    {
        string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, failinimi2); // Faili tee
        foreach (string rida in File.ReadAllLines(path)) // Loeme faili read
        {
            kuude_list.Add(rida); // Lisame iga rea nimekirja
        }
    }
    catch (Exception)
    {
        Console.WriteLine("Viga failiga: "); // Kui viga, siis prindi veateade
    }

    // Prindi kõik read
    foreach (string kuu in kuude_list)
    {
        Console.WriteLine(kuu);
    }

    // Eemaldame "Juuni" nimekirjast
    kuude_list.Remove("Juuni");

    // Muudame esimese rea sisu
    if (kuude_list.Count > 0)
        kuude_list[0] = "Veeel kuuu";

    Console.WriteLine("--------------Kustutasime juuni-----------");

    // Prindi nimekiri pärast muudatusi
    foreach (string kuu in kuude_list)
    {
        Console.WriteLine(kuu);
    }

    return kuude_list; // Tagastame muudatud nimekirja
}

Kokkuvõte

  • StreamWriter ja StreamReader on peamised klassid, mida kasutatakse failide lugemiseks ja kirjutamiseks.
  • Failide lugemine ja kirjutamine toimub kas kõikide ridade lugemise või rea-realt lugemise kaudu.
  • Failide töötlemisel on oluline vigade käsitlemine, et vältida programmi ootamatut lõpetamist.
  • Kui vaja, saab muuta või eemaldada kindlaid ridu pärast faili lugemist.