Delen via


Visual C# gebruiken om uit een tekstbestand te lezen en naar een tekstbestand te schrijven

Dit artikel helpt u bij het lezen van en schrijven naar een tekstbestand met behulp van Visual C#.

Oorspronkelijke productversie: Visual Studio
Oorspronkelijk KB-nummer: 816149

Samenvatting

In het gedeelte Een tekstbestand lezen van dit artikel wordt beschreven hoe u de klasse StreamReader gebruikt om een tekstbestand te lezen. De secties Schrijf een tekstbestand (voorbeeld 1) en de secties Schrijf een tekstbestand (voorbeeld 2) beschrijven hoe u de klasse StreamWriter gebruikt om tekst naar een bestand te schrijven.

Een tekstbestand lezen

De volgende code gebruikt de klasse StreamReader om het tekstbestand te openen, te lezen en te sluiten. U kunt het pad van een tekstbestand doorgeven aan de StreamReader-constructor om het bestand automatisch te openen. De methode ReadLine leest elke regel tekst en verhoogt de bestandsaanwijzer naar de volgende regel terwijl deze wordt gelezen. Wanneer de methode ReadLine het einde van het bestand bereikt, wordt een null-verwijzing geretourneerd. Raadpleeg Klasse StreamReader voor meer informatie.

  1. Maak een voorbeeldtekstbestand in Kladblok. Volg vervolgens deze stappen:

    1. Plak de hello world-tekst in Kladblok.
    2. Sla het bestand op als Sample.txt.
  2. Start Microsoft Visual Studio.

  3. Wijs in het menu Bestand naar Nieuw en selecteer vervolgens Project.

  4. Selecteer Visuele C#-projecten onder Projecttypen en selecteer vervolgens Consoletoepassing onder Sjablonen.

  5. Voeg de volgende code toe aan het begin van het bestand Class1.cs:

    using System.IO;
    
  6. Voeg de volgende code toe aan de methode Main:

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. Selecteer in het menu Foutopsporing Start om de toepassing te compileren en uit te voeren. Druk op ENTER om het venster Console te sluiten. Het venster Console geeft de inhoud van het bestand Sample.txt weer:

    Hello world
    

Een tekstbestand schrijven (voorbeeld 1)

De volgende code gebruikt de klasse StreamWriter om het tekstbestand te openen, te schrijven en te sluiten. Op dezelfde manier als de klasse StreamReader kunt u het pad van een tekstbestand doorgeven aan de StreamWriter-constructor om het bestand automatisch te openen. De methode WriteLine schrijft een volledige tekstregel naar het tekstbestand.

  1. Visual Studio starten.

  2. Wijs in het menu Bestand naar Nieuw en selecteer vervolgens Project.

  3. Selecteer Visuele C#-projecten onder Projecttypen en selecteer vervolgens Consoletoepassing onder Sjablonen.

  4. Voeg de volgende code toe aan het begin van het bestand Class1.cs:

    using System.IO;
    
  5. Voeg de volgende code toe aan de methode Main:

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Selecteer in het menu Foutopsporing Start om de toepassing te compileren en uit te voeren. Deze code maakt een bestand met de naam Test.txt op station C. Open Test.txt in een teksteditor zoals Kladblok. Test.txt bevat twee regels tekst:

    Hello World!!
    From the StreamWriter class
    

Een tekstbestand schrijven (voorbeeld 2)

De volgende code gebruikt de klasse StreamWriter om het tekstbestand te openen, te schrijven en te sluiten. In tegenstelling tot het vorige voorbeeld, geeft deze code twee extra parameters door aan de constructor. De eerste parameter is het bestandspad en de bestandsnaam van het bestand. De tweede parameter, true, geeft aan dat het bestand wordt geopend in de toevoegmodus. Als u false opgeeft voor de tweede parameter, wordt de inhoud van het bestand elke keer dat u de code uitvoert overschreven. De derde parameter specificeert Unicode, zodat StreamWriter het bestand codeert in Unicode-indeling. U kunt ook de volgende coderingsmethoden opgeven voor de derde parameter:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

De methode Write is vergelijkbaar met de methode WriteLine, behalve dat de methode Write niet automatisch een tekencombinatie met een regelterugloop of regelinvoer (CR/LF) insluit. Het is handig wanneer u één teken tegelijk wilt schrijven.

  1. Visual Studio starten.

  2. Wijs in het menu Bestand naar Nieuw en klik vervolgens op Project.

  3. Klik op Visuele C#-projecten onder Projecttypen en klik vervolgens op Consoletoepassing onder Sjablonen.

  4. Voeg de volgende code toe aan het begin van het bestand Class1.cs:

    using System.IO;
    using System.Text;
    
  5. Voeg de volgende code toe aan de methode Main:

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Selecteer in het menu Foutopsporing Start om de toepassing te compileren en uit te voeren. Deze code maakt een bestand met de naam Test1.txt op station C. Open Test1.txt in een teksteditor zoals Kladblok. Test1.txt bevat één regel tekst: 0123456789.

Volledige codelijst voor het lezen van een tekstbestand

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Volledige codevermelding voor het schrijven van een tekstbestand (versie 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Volledige codevermelding voor het schrijven van een tekstbestand (versie 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Problemen oplossen

Voor alle bestandsmanipulaties is het een goede programmeerpraktijk om de code in een try-catch-finally-blok te plaatsen om fouten en uitzonderingen af te handelen. Mogelijk wilt u de ingangen voor het bestand in het laatste blok vrijgeven, zodat het bestand niet voor onbepaalde tijd is vergrendeld. Enkele mogelijke fouten zijn een bestand dat niet bestaat of een bestand dat al in gebruik is.