Zápis do textového souboru (Průvodce programováním v C#)

V tomto článku je několik příkladů, které ukazují různé způsoby zápisu textu do souboru. První dva příklady používají statické metody pohodlí třídy System.IO.File k zápisu každého prvku libovolného IEnumerable<string> a string textového souboru. Třetí příklad ukazuje, jak přidat text do souboru, když potřebujete zpracovat každý řádek jednotlivě při zápisu do souboru. V prvních třech příkladech přepíšete veškerý existující obsah v souboru. Poslední příklad ukazuje, jak připojit text k existujícímu souboru.

Všechny tyto příklady zapisují řetězcové literály do souborů. Pokud chcete formátovat text napsaný do souboru, použijte Format funkci interpolace řetězců v jazyce C#.

Zápis kolekce řetězců do souboru

class WriteAllLines
{
    public static async Task ExampleAsync()
    {
        string[] lines =
        {
            "First line", "Second line", "Third line" 
        };

        await File.WriteAllLinesAsync("WriteLines.txt", lines);
    }
}

Předchozí příklad zdrojového kódu:

  • Vytvoří instanci řetězcového pole se třemi hodnotami.

  • Čeká na volání, které File.WriteAllLinesAsync :

    • Asynchronní vytvoření názvu souboru WriteLines.txt. Pokud soubor již existuje, přepíše se.
    • Zapíše dané řádky do souboru.
    • Zavře soubor, automaticky vyprázdní a vyprázdní ho podle potřeby.

Zápis jednoho řetězce do souboru

class WriteAllText
{
    public static async Task ExampleAsync()
    {
        string text =
            "A class is the most powerful data type in C#. Like a structure, " +
            "a class defines the data and behavior of the data type. ";

        await File.WriteAllTextAsync("WriteText.txt", text);
    }
}

Předchozí příklad zdrojového kódu:

  • Vytvoří instanci řetězce s přiřazeným řetězcovým literálem.

  • Čeká na volání, které File.WriteAllTextAsync :

    • Asynchronní vytvoření názvu souboru WriteText.txt. Pokud soubor již existuje, přepíše se.
    • Zapíše daný text do souboru.
    • Zavře soubor, automaticky vyprázdní a vyprázdní ho podle potřeby.

Zápis vybraných řetězců z pole do souboru

class StreamWriterOne
{
    public static async Task ExampleAsync()
    {
        string[] lines = { "First line", "Second line", "Third line" };
        using StreamWriter file = new("WriteLines2.txt");

        foreach (string line in lines)
        {
            if (!line.Contains("Second"))
            {
                await file.WriteLineAsync(line);
            }
        }
    }
}

Předchozí příklad zdrojového kódu:

  • Vytvoří instanci řetězcového pole se třemi hodnotami.
  • StreamWriter Vytvoří instanci souboru s cestou k souboruWriteLines2.txt jako deklarace pomocí.
  • Iteruje všechny řádky.
  • Podmíněně čeká na volání StreamWriter.WriteLineAsync(String), které zapíše řádek do souboru, když řádek neobsahuje "Second".

Připojení textu k existujícímu souboru

class StreamWriterTwo
{
    public static async Task ExampleAsync()
    {
        using StreamWriter file = new("WriteLines2.txt", append: true);
        await file.WriteLineAsync("Fourth line");
    }
}

Předchozí příklad zdrojového kódu:

Výjimky

Následující podmínky mohou způsobit výjimku:

Existují další podmínky, které mohou způsobit výjimky při práci se systémem souborů, je nejlepší programovat defenzivně.

Viz také