Adriana Pikaljov Portfoolio

en_GBet

4. osa C# Failitöötlus

1. Faili kirjutamine (StreamWriter)

1.1 Alusnäide

try
{
    string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
    StreamWriter text = new StreamWriter(path, true); // true = lisa lõppu
    Console.WriteLine("Sisesta mingi tekst: ");
    string lause = Console.ReadLine();
    text.WriteLine(lause);
    text.Close();
}
catch (Exception)
{
    Console.WriteLine("Mingi viga failiga");
}

1.2 Parim tava (using plokiga – automaatne sulgemine)

using (StreamWriter sw = new StreamWriter(path, true))
{
    sw.WriteLine("Midagi");
} // Fail suletakse automaatselt

Märkus:

  • true lisab andmed faili lõppu, ei kirjutata üle.
  • Fail salvestatakse projekti kausta.

2. Faili lugemine (StreamReader)

2.1 Kogu sisu lugemine

try
{
    string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
    StreamReader text = new StreamReader(path);
    string laused = text.ReadToEnd();
    text.Close();
    Console.WriteLine(laused);
}
catch (Exception)
{
    Console.WriteLine("Mingi viga failiga, ei saa faili lugeda");
}

2.2 Ridade kaupa lugemine List abil

List<string> kuude_list = new List<string>();
try
{
    string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
    foreach (string rida in File.ReadAllLines(path))
    {
        kuude_list.Add(rida);
    }
}
catch (Exception)
{
    Console.WriteLine("Viga failiga!");
}


3. Listi muutmine ja kuvamine

// Kuvamine
foreach (string kuu in kuude_list)
{
    Console.WriteLine(kuu);
}

// Eemalda "Juuni"
kuude_list.Remove("Juuni");

// Muuda esimest elementi
if (kuude_list.Count > 0)
    kuude_list[0] = "Veeel kuuu";

Console.WriteLine("--------------Kustutasime juuni-----------");
foreach (string kuu in kuude_list)
{
    Console.WriteLine(kuu);
}


4. Otsing nimekirjast

Console.WriteLine("Sisesta kuu nimi, mida otsida:");
string otsitav = Console.ReadLine();

if (kuude_list.Contains(otsitav))
    Console.WriteLine("Kuu " + otsitav + " on olemas.");
else
    Console.WriteLine("Sellist kuud pole.");


5. Listi salvestamine tagasi faili

string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
File.WriteAllLines(path, kuude_list);
Console.WriteLine("Andmed on salvestatud.");


6. Parimad praktikad failitöötluses

  • Kasuta Path.Combine, et määrata failitee töötab igas süsteemis.
  • Kontrolli faili olemasolu:
if (!File.Exists(path))
    File.WriteAllLines(path, new string[] { "Jaanuar", "Veebruar", "Märts" });

  • Sulge failid alati või kasuta using plokki.
  • Kasuta try-catch, et käsitleda vigu.

7. Kokkuvõte – oskused

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()