Osa 4 – Failitöötlus
Faili kirjutamine (StreamWriter)
try
{
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt"); //@"..\..\..\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");
}
Kui kasutad StreamWriter või StreamReader
Siis pead kindlasti faili sulgema, näiteks:
StreamWriter sw = new StreamWriter(path);
sw.WriteLine("Midagi");
sw.Close(); // Vajalik!
Või parem lahendus:
using (StreamWriter sw = new StreamWriter(path))
{
sw.WriteLine("Midagi");
} // Fail suletakse automaatselt siin
- Fail salvestatakse projektikausta
truetähendab, et ei kirjutata üle, vaid lisatakse lõppu
Faili lugemine (StreamReader)
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");
}
Ridade lugemine List<string> 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!");
}
Listi muutmine ja 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);
}
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.");
Listi salvestamine tagasi faili
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
File.WriteAllLines(path, kuude_list);
Console.WriteLine("Andmed on salvestatud.");
Parimad praktikad
- Kasuta
Path.Combinefailitee määramisel – töötab igas süsteemis. - Faili olemasolu kontroll:
if (!File.Exists(path)) File.WriteAllLines(path, new string[] { "Jaanuar", "Veebruar", "Märts" });
- Sulge failid alati (või kasuta
usingplokki).
| Failikirjutus | StreamWriter, WriteLine() |
| Faililugemine | StreamReader, ReadToEnd(), File.ReadAllLines() |
| Vigade käsitlemine | try-catch |
| Andmestruktuurid | List<string>, lisamine, muutmine, kustutamine |
| Failitee kasutamine | Path.Combine, AppDomain.CurrentDomain.BaseDirectory |
| Otsing ja salvestus | Contains(), WriteAllLines() |

