TOC

This article has been localized into Dutch by the community.

Bestandsbehandeling:

Bestanden lezen en schrijven

In dit hoofdstuk gaan we kijken naar het lezen en schrijven van eenvoudige bestanden met C#. Gelukkig maakt C# dat gemakkelijk voor ons. De File class, van de System.IO namespace heeft ongeveer alles wat we nodig hebben van wat we maar zouden willen. Daardoor is het erg gemakkelijk om een bestand te lezen of er naar toe te schrijven.

In ons eerste voorbeeld maken we een extreem minimalistische tekstverwerker. In feite is die zo simpel dat we maar één bestand kunnen lezen en daarna nieuwe content er naartoe schrijven, en dat met maar één enkele regel tekst per keer. Maar het laat wel zien hoe gemakkelijk het is om de File class te gebruiken:

using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if(File.Exists("test.txt"))
            {
                string content = File.ReadAllText("test.txt");
                Console.WriteLine("Current content of file:");
                Console.WriteLine(content);
            }
            Console.WriteLine("Please enter new content for the file:");
            string newContent = Console.ReadLine();
            File.WriteAllText("test.txt", newContent);
        }
    }
}

Het zal je opvallen dat we de File class op drie plaatsen gebruiken: (1) We gebruiken hem om te zien of het bestand bestaat, (2) we gebruiken de ReadAllText() method om de inhoud van het bestand te lezen, en (3) we gebruiken de WriteAllText() method om nieuwe content naar het bestand te schrijven. je ziet dat ik geen absoluut pad gebruik maar alleen een simpele bestandsnaam. Dit plaatst het bestand in dezelfde directory as het uitvoerbare (executable) bestand, wat voor dit moment kan. Afgezien daarvan is het voorbeeld gemakkelijk genoeg te begrijpen: WE checken het bestaan van het bestand, we lezen de inhoud, en sturen het naar de console. Daarna vragen we de gebruiker om nieuwe content, en als we dat hebben, schrijven we dat naar het bestand. Het is duidelijk dat dit de eerder content zal overschrijven, maar voor het ogenblik is dat geen probleem. We zouden echter ook de AppendAllText method kunnen gebruiken. Probeer de WriteAllText regel in dit te veranderen:

File.AppendAllText("test.txt", newContent);

Als je dit runt, zal je zien dat de nieuwe tekst is toegevoegd aan de bestaande tekst in plaats van die te overschrijven. Zo eenvoudig dus. Maar we krijgen nog steeds maar een regel tekst bij elke uitvoering van onze applicatie. Laten we wat creatiever zijn en daar verandering in brengen. Vervang de laatste regels in ons voorbeeld hiermee:

Console.WriteLine("Please enter new content for the file - type exit and press enter to finish editing:");
string newContent = Console.ReadLine();
while(newContent != "exit")
{
    File.AppendAllText("test.txt", newContent + Environment.NewLine);
    newContent = Console.ReadLine();
}

Zoals je ziet, vragen we de gebruiker het woord 'exit' in te toetsen als hij wil stoppen met het editen van het bestand. En zolang hij dat niet doet, blijft user input toegevoegd worden en wordt gevraagd om een nieuwe regel input. We voegen ook een teken toe voor een 'nieuwe regel', de Environment.NewLine, om het er als echte tekstregels te laten uitzien.

Echter, in plaats van elke keer naar het bestand te moeten schrijven, is het onderstaande een plezieriger oplossing:

Console.WriteLine("Please enter new content for the file - type exit and press enter to finish editing:");
using(StreamWriter sw = new StreamWriter("test.txt"))
{
    string newContent = Console.ReadLine();
    while(newContent != "exit")
    {
        sw.Write(newContent + Environment.NewLine);
        newContent = Console.ReadLine();
    }
}

Het gebruik van Streams is een beetje buiten het blikveld van dit hoofdstuk, maar het mooie van dit voorbeeld is dat we maar één keer het bestand openen en veranderingen aanbrengen totdat we tevreden zijn. In dit geval maken we gebruik van het 'using' statement van C#, waardoor we er zeker van zijn dat de referentie naar het bestand wordt gesloten als hij buiten het bereik treedt, dat wil zeggen, als het klaar is met het blok van { } . Als je het 'using' statement niet gebruikt, moet je zelf de Close() method oproepen in StreamWriter.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!