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.
Erstellen Sie eine Beispieltextdatei in Notepad. Führen Sie die folgenden Schritte aus:
- Fügen Sie den Hello World-Text in Notepad ein.
- Speichern Sie die Datei unter dem Namen Beispiel.txt.
Microsoft Visual Studio starten
Klicken Sie im Menü Datei auf Neu, und wählen Sie anschließend Projekt.
Wählen Sie Visual C#-Projekte unter Projekt-Typen, und wählen Sie dann Konsolenanwendung unter Vorlagen aus.
Fügen Sie am Anfang der Datei Class1.cs den folgenden Code hinzu:
using System.IO;
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."); }
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.
Starten Sie Visual Studio.
Klicken Sie im Menü Datei auf Neu, und wählen Sie anschließend Projekt.
Wählen Sie Visual C#-Projekte unter Projekt-Typen, und wählen Sie dann Konsolenanwendung unter Vorlagen aus.
Fügen Sie am Anfang der Datei Class1.cs den folgenden Code hinzu:
using System.IO;
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."); }
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 true
gibt 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.
Starten Sie Visual Studio.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Unter Projekttypen klicken Sie auf Visual C#-Projekte. Klicken Sie dann unter Vorlagen auf die Option Konsolenanwendung.
Fügen Sie am Anfang der Datei Class1.cs den folgenden Code hinzu:
using System.IO; using System.Text;
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."); }
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.