Konspekt C#

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
  • true tä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.Combine failitee 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 using plokki).
FailikirjutusStreamWriterWriteLine()
FaililugemineStreamReaderReadToEnd()File.ReadAllLines()
Vigade käsitleminetry-catch
AndmestruktuuridList<string>, lisamine, muutmine, kustutamine
Failitee kasutaminePath.CombineAppDomain.CurrentDomain.BaseDirectory
Otsing ja salvestusContains()WriteAllLines()

Ülesanne

Lehed: 1 2 3 4 5 6