Procedure: Tekst naar een bestand schrijven
In dit artikel worden verschillende manieren beschreven om tekst naar een bestand te schrijven voor een .NET-app.
De volgende klassen en methoden worden meestal gebruikt om tekst naar een bestand te schrijven:
StreamWriter bevat methoden voor het schrijven naar een bestand synchroon (Write en WriteLine) of asynchroon (WriteAsync en WriteLineAsync).
File biedt statische methoden voor het schrijven van tekst naar een bestand, zoals WriteAllLines en WriteAllText, of om tekst toe te voegen aan een bestand, zoals AppendAllLines, AppendAllTexten AppendText.
Path is bedoeld voor tekenreeksen met bestands- of mappadinformatie. Deze bevat de Combine methode en in .NET Core 2.1 en hoger, de Join en TryJoin methoden. Met deze methoden kunt u tekenreeksen samenvoegen voor het bouwen van een bestand of mappad.
Notitie
In de volgende voorbeelden ziet u alleen de minimale hoeveelheid code die nodig is. Een echte app biedt meestal robuustere foutcontrole en afhandeling van uitzonderingen.
Voorbeeld: Synchroon tekst schrijven met StreamWriter
In het volgende voorbeeld ziet u hoe u de StreamWriter klasse gebruikt om synchroon tekst naar een nieuw bestand te schrijven, één regel tegelijk. Omdat het StreamWriter object wordt gedeclareerd en geïnstantieerd in een using
instructie, wordt de Dispose methode aangeroepen, waardoor de stroom automatisch wordt leeggemaakt en gesloten.
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
Voorbeeld: Synchroon tekst toevoegen met StreamWriter
In het volgende voorbeeld ziet u hoe u de StreamWriter klasse gebruikt om synchroon tekst toe te voegen aan het tekstbestand dat in het eerste voorbeeld is gemaakt:
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
Voorbeeld: Asynchroon tekst schrijven met StreamWriter
In het volgende voorbeeld ziet u hoe u asynchroon tekst naar een nieuw bestand schrijft met behulp van de StreamWriter klasse. Als u de WriteAsync methode wilt aanroepen, moet de methodeaanroep zich binnen een async
methode bevindt.
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.
Voorbeeld: Tekst schrijven en toevoegen met de klasse Bestand
In het volgende voorbeeld ziet u hoe u tekst naar een nieuw bestand schrijft en nieuwe tekstregels toevoegt aan hetzelfde bestand met behulp van de File klasse. De WriteAllText en AppendAllLines methoden openen en sluiten het bestand automatisch. Als het pad dat u opgeeft voor de WriteAllText methode al bestaat, wordt het bestand overschreven.
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