Vorgehensweise: Schreiben von Text in eine Datei
In diesem Artikel werden verschiedene Vorgehensweisen zum Schreiben von Text in eine Datei für eine .NET-Anwendung veranschaulicht.
Die folgenden Klassen und Methoden werden in der Regel zum Schreiben von Text in eine Datei verwendet:
StreamWriter enthält Methoden zum synchronen (Write und WriteLine) oder asynchronen (WriteAsync und WriteLineAsync) Schreiben in eine Datei.
File stellt statische Methoden zum Schreiben von Text in eine Datei (z. B. WriteAllLines und WriteAllText) oder zum Anfügen von Text an eine Datei (z. B. AppendAllLines, AppendAllText und AppendText) zur Verfügung.
Path wird für Zeichenfolgen verwendet, die Informationen zu Datei- oder Verzeichnispfaden enthalten. Sie enthält die Combine-Methode sowie in .NET Core 2.1 und höher die Methoden Join und TryJoin. Mit diesen Methoden können Sie Zeichenfolgen zum Erstellen eines Datei- oder Verzeichnispfads verketten.
Hinweis
In den folgenden Beispielen wird nur das Mindeste des erforderlichen Codes veranschaulicht. Reale Anwendungen umfassen im Allgemeinen eine robustere Fehlerüberprüfung und Ausnahmebehandlung.
Beispiel: Synchrones Schreiben von Text mit StreamWriter
Im folgenden Beispiel wird gezeigt, wie Sie die StreamWriter-Klasse verwenden, um Text zeilenweise synchron in eine neue Datei zu schreiben. Da das StreamWriter-Objekt in einer using
-Anweisung deklariert und instanziiert ist, wird die Dispose-Methode aufgerufen, die den Datenstrom automatisch leert und beendet.
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Create a string array with the lines of text
string[] lines = { "First line", "Second line", "Third line" };
// Set a variable to the Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Write the string array to a new file named "WriteLines.txt".
using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "WriteLines.txt")))
{
foreach (string line in lines)
outputFile.WriteLine(line);
}
}
}
// The example creates a file named "WriteLines.txt" with the following contents:
// First line
// Second line
// Third line
Imports System.IO
Class WriteText
Public Shared Sub Main()
' Create a string array with the lines of text
Dim lines() As String = {"First line", "Second line", "Third line"}
' Set a variable to the Documents path.
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
' Write the string array to a new file named "WriteLines.txt".
Using outputFile As New StreamWriter(Path.Combine(docPath, Convert.ToString("WriteLines.txt")))
For Each line As String In lines
outputFile.WriteLine(line)
Next
End Using
End Sub
End Class
' The example creates a file named "WriteLines.txt" with the following contents:
' First line
' Second line
' Third line
Beispiel: Synchrones Anfügen von Text mit StreamWriter
Im folgenden Beispiel wird gezeigt, wie Sie die StreamWriter-Klasse verwenden, um Text synchron an die Textdatei anzufügen, die im ersten Beispiel erstellt wurde:
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Set a variable to the Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Append text to an existing file named "WriteLines.txt".
using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "WriteLines.txt"), true))
{
outputFile.WriteLine("Fourth Line");
}
}
}
// The example adds the following line to the contents of "WriteLines.txt":
// Fourth Line
Imports System.IO
Class AppendText
Public Shared Sub Main()
' Set a variable to the Documents path.
Dim docPath As String =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
' Append text to an existing file named "WriteLines.txt".
Using outputFile As New StreamWriter(Path.Combine(docPath, Convert.ToString("WriteLines.txt")), True)
outputFile.WriteLine("Fourth Line")
End Using
End Sub
End Class
' The example adds the following line to the contents of "WriteLines.txt":
' Fourth Line
Beispiel: Asynchrones Schreiben von Text mit StreamWriter
Das folgende Beispiel zeigt, wie Sie Text mithilfe der StreamWriter -Klasse asynchron in eine neue Datei schreiben. Der Methodenaufruf muss sich innerhalb einer async
-Methode befinden, um die WriteAsync-Methode aufzurufen.
using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
// Set a variable to the Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Write the specified text asynchronously to a new file named "WriteTextAsync.txt".
using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "WriteTextAsync.txt")))
{
await outputFile.WriteAsync("This is a sentence.");
}
}
}
// The example creates a file named "WriteTextAsync.txt" with the following contents:
// This is a sentence.
Imports System.IO
Public Module Example
Public Sub Main()
WriteTextAsync()
End Sub
Async Sub WriteTextAsync()
' Set a variable to the Documents path.
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
' Write the text asynchronously to a new file named "WriteTextAsync.txt".
Using outputFile As New StreamWriter(Path.Combine(docPath, Convert.ToString("WriteTextAsync.txt")))
Await outputFile.WriteAsync("This is a sentence.")
End Using
End Sub
End Module
' The example creates a file named "WriteTextAsync.txt" with the following contents:
' This is a sentence.
Beispiel: Schreiben und Anfügen von Text mit der File-Klasse
Das folgende Beispiel zeigt, wie Sie mithilfe der File -Klasse Text in eine neue Datei schreiben und neue Textzeilen an diese Datei anfügen. Durch die Methoden WriteAllText und AppendAllLines wird die Datei automatisch geöffnet und geschlossen. Wenn der für die WriteAllText -Methode angegebene Pfad bereits vorhanden ist, wird die Datei überschrieben.
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Create a string with a line of text.
string text = "First line" + Environment.NewLine;
// Set a variable to the Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// Write the text to a new file named "WriteFile.txt".
File.WriteAllText(Path.Combine(docPath, "WriteFile.txt"), text);
// Create a string array with the additional lines of text
string[] lines = { "New line 1", "New line 2" };
// Append new lines of text to the file
File.AppendAllLines(Path.Combine(docPath, "WriteFile.txt"), lines);
}
}
// The example creates a file named "WriteFile.txt" with the contents:
// First line
// And then appends the following contents:
// New line 1
// New line 2
Imports System.IO
Class WriteFile
Public Shared Sub Main()
' Create a string array with the lines of text
Dim text As String = "First line" & Environment.NewLine
' Set a variable to the Documents path.
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
' Write the text to a new file named "WriteFile.txt".
File.WriteAllText(Path.Combine(docPath, Convert.ToString("WriteFile.txt")), text)
' Create a string array with the additional lines of text
Dim lines() As String = {"New line 1", "New line 2"}
' Append new lines of text to the file
File.AppendAllLines(Path.Combine(docPath, Convert.ToString("WriteFile.txt")), lines)
End Sub
End Class
' The example creates a file named "WriteFile.txt" with the following contents:
' First line
' And then appends the following contents:
' New line 1
' New line 2