Útmutató: Szöveg írása fájlba
Ez a cikk a .NET-alkalmazások fájlba történő írásának különböző módjait mutatja be.
A következő osztályokat és metódusokat általában arra használják, hogy szöveget írjanak egy fájlba:
StreamWriterA fájlba szinkronan (Write és ) vagy aszinkron módon (WriteAsync és WriteLineWriteLineAsync) írt metódusokat tartalmaz.
File Statikus metódusokat biztosít a szöveg fájlba( például WriteAllLines és WriteAllText) írására, illetve szöveg hozzáfűzésére egy fájlhoz, például AppendAllLines: , AppendAllTextés AppendText.
Path fájl- vagy könyvtár elérésiút-információkkal rendelkező sztringekhez készült. Tartalmazza a metódust, a Combine .NET Core 2.1-ben és újabb verzióiban pedig a JoinTryJoin metódusokat. Ezekkel a módszerekkel sztringeket fűzhet össze egy fájl- vagy könyvtárútvonal létrehozásához.
Feljegyzés
Az alábbi példák csak a minimálisan szükséges kódmennyiséget mutatják be. A valós alkalmazások általában robusztusabb hibaellenőrzést és kivételkezelést biztosítanak.
Példa: Szöveg szinkronizálása a StreamWriter használatával
Az alábbi példa bemutatja, hogyan lehet az StreamWriter osztály használatával szinkron módon szöveget írni egy új fájlba egyszerre egy sorban. Mivel az StreamWriter objektum deklarálva és példányosítva van egy using
utasításban, a rendszer meghívja a Dispose metódust, amely automatikusan kiüríti és bezárja a streamet.
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
Példa: Szöveg szinkronizálása a StreamWriterrel
Az alábbi példa bemutatja, hogyan használhatja az StreamWriter osztályt arra, hogy szinkron módon hozzáfűzze a szöveget az első példában létrehozott szövegfájlhoz:
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
Példa: Szöveg aszinkron írása a StreamWriter használatával
Az alábbi példa bemutatja, hogyan írhat szöveget aszinkron módon egy új fájlba az StreamWriter osztály használatával. A metódus meghívásához a WriteAsync metódushívásnak egy async
metóduson belül kell lennie.
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.
Példa: Szöveg írása és hozzáfűzése a Fájl osztálysal
Az alábbi példa bemutatja, hogyan írhat szöveget egy új fájlba, és hogyan fűzhet hozzá új szövegsorokat ugyanahhoz a fájlhoz az File osztály használatával. A WriteAllText metódusok automatikusan megnyitják és AppendAllLines bezárják a fájlt. Ha a metódusnak WriteAllText megadott elérési út már létezik, a fájl felülíródik.
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