Verwenden von Visual C# zum Lesen aus und Schreiben in eine Textdatei

Dieser Artikel hilft Ihnen, mit visual C# aus einer Textdatei zu lesen und in eine Textdatei zu schreiben.

Ursprüngliche Produktversion: Visual Studio
Ursprüngliche KB-Nummer: 816149

Zusammenfassung

Im Abschnitt Lesen einer Textdatei in diesem Artikel wird beschrieben, wie Sie die StreamReader Klasse zum Lesen einer Textdatei verwenden. In den Abschnitten Schreiben einer Textdatei (Beispiel 1) und Schreiben einer Textdatei (Beispiel 2) wird beschrieben, wie man die StreamWriter Klasse zum Schreiben von Text in eine Datei verwendet.

Lesen einer Textdatei

Der folgende Code verwendet die StreamReader Klasse zum Öffnen, Lesen und Schließen der Textdatei. Sie können den Pfad einer Textdatei an den StreamReader Konstruktor übergeben, um die Datei automatisch zu öffnen. Die ReadLine Methode liest jede Textzeile und erhöht den Dateizeiger während des Lesens auf die nächste Zeile. Wenn die ReadLine Methode das Ende der Datei erreicht, wird ein Null-Verweis zurückgegeben. Weitere Informationen finden Sie unter StreamReader Class.

  1. Erstellen Sie eine Beispieltextdatei in Notepad. Führen Sie die folgenden Schritte aus:

    1. Fügen Sie den Hello World-Text in Notepad ein.
    2. Speichern Sie die Datei unter dem Namen Beispiel.txt.
  2. Microsoft Visual Studio starten

  3. Klicken Sie im Menü Datei auf Neu, und wählen Sie anschließend Projekt.

  4. Wählen Sie Visual C#-Projekte unter Projekt-Typen, und wählen Sie dann Konsolenanwendung unter Vorlagen aus.

  5. Fügen Sie am Anfang der Datei Class1.cs den folgenden Code hinzu:

    using System.IO;
    
  6. Fügen Sie zur Methode Main den folgenden Code hinzu:

    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. Wählen Sie im Menü Debuggen die Option Start aus, um die Anwendung zu kompilieren und auszuführen. Klicken Sie auf EINGABE, um das Fenster Konsole zu schließen. Im Fenster Konsole wird der Inhalt der Datei Beispiel.txt angezeigt:

    Hello world
    

Schreiben einer Textdatei (Beispiel 1)

Der folgende Code verwendet die StreamWriter Klasse zum Öffnen, Schreiben und Schließen der Textdatei. Ähnlich wie bei der StreamReader Klasse können Sie den Pfad einer Textdatei an den StreamWriter Konstruktor übergeben, um die Datei automatisch zu öffnen. Die WriteLine-Methode schreibt eine vollständige Textzeile in die Textdatei.

  1. Starten Sie Visual Studio.

  2. Klicken Sie im Menü Datei auf Neu, und wählen Sie anschließend Projekt.

  3. Wählen Sie Visual C#-Projekte unter Projekt-Typen, und wählen Sie dann Konsolenanwendung unter Vorlagen aus.

  4. Fügen Sie am Anfang der Datei Class1.cs den folgenden Code hinzu:

    using System.IO;
    
  5. Fügen Sie zur Methode Main den folgenden Code hinzu:

    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. Wählen Sie im Menü Debuggen die Option Start aus, um die Anwendung zu kompilieren und auszuführen. Dieser Code erstellt eine Datei mit dem Namen Test.txt auf Laufwerk C. Öffnen Sie Test.txt in einem Text-Editor wie etwa Notepad. Test.txt enthält zwei Textzeilen:

    Hello World!!
    From the StreamWriter class
    

Schreiben einer Textdatei (Beispiel 2)

Der folgende Code verwendet die StreamWriter Klasse zum Öffnen, Schreiben und Schließen der Textdatei. Anders als beim vorherigen Beispiel übergibt dieser Code zwei zusätzliche Parameter an den Konstruktor. Der erste Parameter ist der Dateipfad und der Dateiname der Datei. Der zweite Parameter truegibt an, dass die Datei im Anfügemodus geöffnet wird. Wenn Sie für den zweiten Parameter false angeben, wird der Inhalt der Datei jedes Mal überschrieben, wenn Sie den Code ausführen. Der dritte Parameter gibt Unicode an, sodass StreamWriter die Datei im Unicode-Format codiert. Sie können auch die folgenden Codierungsmethoden für den dritten Parameter angeben:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

Die Methode Write ähnelt der Methode WriteLine, mit der Ausnahme, dass die Methode Write nicht automatisch eine Wagenrücklauf- oder Zeilenvorschubzeichenkombination (CR/LF) einbettet. Das ist hilfreich, wenn Sie jeweils ein Zeichen schreiben möchten.

  1. Starten Sie Visual Studio.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Unter Projekttypen klicken Sie auf Visual C#-Projekte. Klicken Sie dann unter Vorlagen auf die Option Konsolenanwendung.

  4. Fügen Sie am Anfang der Datei Class1.cs den folgenden Code hinzu:

    using System.IO;
    using System.Text;
    
  5. Fügen Sie zur Methode Main den folgenden Code hinzu:

    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. Wählen Sie im Menü Debuggen die Option Start aus, um die Anwendung zu kompilieren und auszuführen. Dieser Code erstellt eine Datei mit dem Namen Test1.txt auf Laufwerk C. Öffnen Sie Test1.txt in einem Text-Editor wie etwa Notepad. Test1.txt enthält eine einzelne Textzeile: 0123456789.

Vollständige Codeauflistung dazu, wie man eine Textdatei liest

//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.");
            }
        }
    }
}

Vollständige Codeauflistung dazu, wie man eine Textdatei schreibt (Version 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.");
            }
        }
    }
}

Vollständige Codeauflistung dazu, wie man eine Textdatei schreibt (Version 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.");
            }
        }
    }
}

Problembehandlung

Beim Umgang mit Dateien empfiehlt es sich immer, den Code in einen try-catch-finally Block einzuschließen, um Fehler und Ausnahmen zu behandeln. Insbesondere sollten Sie Handles für die Datei im endgültigen Block freigeben, damit die Datei nicht unbegrenzt gesperrt wird. Einige mögliche Fehler sind beispielsweise eine Datei, die nicht vorhanden ist, oder eine Datei, die bereits verwendet wird.