如何:写入文本文件(C# 编程指南)

以下示例给出了将文本写入文件的各种方法。 前两个示例对 System.IO.File 类使用静态便捷方法以将任何 IEnumerable<string> 的每个元素和一个字符串写入文本文件。 示例 3 展示了在写入文件时必须分别处理文本的每一行时,如何将文本添加到文件。 示例 1-3 覆盖文件中的所有现有内容,但示例 4 展示如何将文本追加到现有文件。

这些示例均会将字符串文本写入文件,但是你更有可能需要使用 Format 方法,此方法具有很多用于写入不同类型值的控件,包括在字段中左右对齐、有无边距等。 还可以使用 C# 字符串内插功能。

示例


class WriteTextFile
{
    static void Main()
    {

        // These examples assume a "C:\Users\Public\TestFolder" folder on your machine.
        // You can modify the path if necessary.

        // Example #1: Write an array of strings to a file.
        // Create a string array that consists of three lines.
        string[] lines = { "First line", "Second line", "Third line" };
        // WriteAllLines creates a file, writes a collection of strings to the file,
        // and then closes the file.  You do NOT need to call Flush() or Close().
        System.IO.File.WriteAllLines(@"C:\Users\Public\TestFolder\WriteLines.txt", lines);

        // Example #2: Write one string to a text file.
        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. ";
        // WriteAllText creates a file, writes the specified string to the file,
        // and then closes the file.    You do NOT need to call Flush() or Close().
        System.IO.File.WriteAllText(@"C:\Users\Public\TestFolder\WriteText.txt", text);

        // Example #3: Write only some strings in an array to a file.
        // The using statement automatically flushes AND CLOSES the stream and calls 
        // IDisposable.Dispose on the stream object.
        // NOTE: do not use FileStream for text files because it writes bytes, but StreamWriter
        // encodes the output as text.
        using (System.IO.StreamWriter file = 
            new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt"))
        {
            foreach (string line in lines)
            {
                // If the line doesn't contain the word 'Second', write the line to the file.
                if (!line.Contains("Second"))
                {
                    file.WriteLine(line);
                }
            }
        }

        // Example #4: Append new text to an existing file.
        // The using statement automatically flushes AND CLOSES the stream and calls 
        // IDisposable.Dispose on the stream object.
        using (System.IO.StreamWriter file = 
            new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt", true))
        {
            file.WriteLine("Fourth line");
        }
    }
}
 //Output (to WriteLines.txt):
 //   First line
 //   Second line
 //   Third line

 //Output (to WriteText.txt):
 //   A class is the most powerful data type in C#. Like a structure, a class defines the data and behavior of the data type.

 //Output to WriteLines2.txt after Example #3:
 //   First line
 //   Third line

 //Output to WriteLines2.txt after Example #4:
 //   First line
 //   Third line
 //   Fourth line

这些示例均会将字符串文本写入文件,但是你更有可能需要使用 Format 方法,此方法具有很多用于写入不同类型值的控件,包括在字段中左右对齐、有无边距等。 还可以使用 C# 字符串内插功能。

可靠编程

以下情况可能会导致异常:

  • 文件已存在并且为只读。

  • 路径名可能太长。

  • 磁盘可能已满。

请参见

概念

C# 编程指南

其他资源

文件系统和注册表(C# 编程指南) 示例:将集合保存到应用程序存储