📜  如何在C#中读取和写入文本文件?

📅  最后修改于: 2021-05-29 17:12:59             🧑  作者: Mango

程序终止会导致与该程序有关的所有数据被删除。因此,我们需要将数据存储在某个地方。文件用于永久存储和共享数据。 C#可用于检索和操作存储在文本文件中的数据。

读取文本文件: C#中的文件类定义了两种读取文本文件的静态方法,即File.ReadAllText()File.ReadAllLines()

  • File.ReadAllText()一次读取整个文件并返回一个字符串。我们需要将此字符串存储在变量中,并使用它在屏幕上显示内容。
  • File.ReadAllLines()一次读取一个文件,然后以字符串格式返回该行。我们需要一个字符串数组来存储每一行。我们使用相同的字符串数组显示文件的内容。

还有另一种读取文件的方法,即使用StreamReader对象。 StreamReader一次也读取一行,并返回一个字符串。在下面给出的示例代码中说明了所有上述读取文件的方式。

// C# program to illustrate how 
// to read a file in C#
using System;
using System.IO;
  
class Program {
    static void Main(string[] args)
    {
        // Store the path of the textfile in your system
        string file = @"M:\Documents\Textfile.txt";
  
        Console.WriteLine("Reading File using File.ReadAllText()");
  
        // To read the entire file at once
        if (File.Exists(file)) {
            // Read all the content in one string
            // and display the string
            string str = File.ReadAllText(file);
            Console.WriteLine(str);
        }
        Console.WriteLine();
  
        Console.WriteLine("Reading File using File.ReadAllLines()");
  
        // To read a text file line by line
        if (File.Exists(file)) {
            // Store each line in array of strings
            string[] lines = File.ReadAllLines(file);
  
            foreach(string ln in lines)
                Console.WriteLine(ln);
        }
        Console.WriteLine();
  
        Console.WriteLine("Reading File using StreamReader");
  
        // By using StreamReader
        if (File.Exists(file)) {
            // Reads file line by line
            StreamReader Textfile = new StreamReader(file);
            string line;
  
            while ((line = Textfile.ReadLine()) != null) {
                Console.WriteLine(line);
            }
  
            Textfile.Close();
  
            Console.ReadKey();
        }
        Console.WriteLine();
    }
}

要运行此程序,请保存扩展名为.cs的文件,然后可以在cmd上使用csc filename.cs命令执行该文件。或者,您可以使用Visual Studio。在这里,我们有一个名为Textfile.txt的文本文件,其内容显示在输出中。

输出:

在C#中读取文本文件

编写文本文件: C#中的File类定义了两个静态方法来编写文本文件,即File.WriteAllText()File.WriteAllLines()

  • File.WriteAllText()一次写入整个文件。它带有两个参数,即文件的路径和必须写入的文本。
  • File.WriteAllLines()一次将文件写入一行。它带有两个参数,即文件的路径和必须写入的文本,它是一个字符串数组。

还有另一种写入文件的方式,即使用StreamWriter对象。 StreamWriter一次也写一行。如果文件不存在,则这三种写入方法均会创建一个新文件,但是如果该文件已存在于指定位置,则该文件将被覆盖。在下面给出的示例代码中说明了所有上述写入文本文件的方式。

// C# program to illustrate how 
// to write a file in C#
using System;
using System.IO;
  
class Program {
    static void Main(string[] args)
    {
        // Store the path of the textfile in your system
        string file = @"M:\Documents\Textfile.txt";
  
        // To write all of the text to the file
        string text = "This is some text.";
        File.WriteAllText(file, text);
  
        // To display current contents of the file
        Console.WriteLine(File.ReadAllText(file));
        Console.WriteLine();
  
        // To write text to file line by line
        string[] textLines1 = { "This is the first line", 
                               "This is the second line",
                              "This is the third line" };
  
        File.WriteAllLines(file, textLines1);
  
        // To display current contents of the file
        Console.WriteLine(File.ReadAllText(file));
  
        // To write to a file using StreamWriter
        // Writes line by line
        string[] textLines2 = { "This is the new first line",
                             "This is the new second line" };
  
        using(StreamWriter writer = new StreamWriter(file))
        {
            foreach(string ln in textLines2)
            {
                writer.WriteLine(ln);
            }
        }
        // To display current contents of the file
        Console.WriteLine(File.ReadAllText(file));
  
        Console.ReadKey();
    }
}

要运行该程序,请保存扩展名为.cs的文件,然后可以在cmd上使用csc filename.cs命令执行该文件。或者,您可以使用Visual Studio。

输出:

用C#编写文件

如果您想向现有文件中添加更多文本而不会覆盖已经存储在其中的数据,则可以使用System.IO的File类提供的append方法。

using System;
using System.IO;
  
class Program {
    static void Main(string[] args)
    {
        // Store the path of the textfile in your system
        string file = @"M:\Documents\Textfile.txt";
  
        // To write all of the text to the file
        string text1 = "This is some text.";
        File.WriteAllText(file, text1);
  
        // To append text to a file
        string text2 = "This is text to be appended";
        File.AppendAllText(file, text2);
  
        // To display current contents of the file
        Console.WriteLine(File.ReadAllText(file));
        Console.ReadKey();
    }
}

输出:

在C#文件中附加文本