C# 程序逐行读取文件内容

csharpserver side programmingprogramming更新于 2025/9/18 7:05:00

简介

在这里,我们将学习编写一个 C# 程序来逐行读取文件内容。有多种方法可以做到这一点。我们将逐一讨论它们。

文件处理是在 C# 中完成的。在大多数情况下,文件用于存储数据。文件处理或文件管理用外行术语来说就是各种过程,例如创建文件、从文件中读取、写入文件、附加文件等。文件的读取和写入是文件处理中最常见的两种操作。

1. 使用 File.ReadLines() 方法

逐行读取文件内容的第一种方法是使用 File.ReadLines() 方法。此方法接受字符编码作为可选参数。

好吧,这个过程可能会抛出一些异常,如 IO 异常。如果发生 I/O 错误,则会抛出此异常;如果找不到您尝试打开的文件,则会抛出另一个错误 FileNotFoundException。

这个过程也有一个缺点,因为当您处理大文件时,这种技术效率很低。这将返回 Enumerable,通过它可以在返回整个集合之前开始枚举。

算法

下面的算法将逐步说明如何使用 File.ReadLines() 方法逐行读取文件内容。

下面讨论的算法将引导我们创建程序。

步骤 1 − 创建一个字符串,用于存储文件路径的名称,请记住这是一个绝对路径。

步骤 2 − 使用IEumerable 用于逐行读取文件并获取最终结果。

步骤 3 − 通过使用 Environment.Newline 获取为环境定义的换行符字符串。然后程序结束。

示例

以下是此过程的代码 −

using System;
using System.Collections.Generic;
using System.IO;

public class Example {
   public static void Main() {
      string fileloc = @"D:\ttpt\loc
ew.txt"; IEnumerable<string> lines = File.ReadLines(fileloc); Console.WriteLine(String.Join(Environment.NewLine, lines)); } }

输出

This is a file.
Hello from tutorials point.

首先需要创建一个字符串类型的变量,其中包含文件位置的地址。之后,程序将逐行读取文件。

2. 使用 File.ReadAllLines() 方法

逐行读取文件内容的另一种方法是使用 File.ReadAllLines() 方法。我们不应该将 ReadAllLines 用于大数据文件,因为 ReadAllLines 与返回 Enumerable 的 ReadLines 不同,ReadAllLines 给出一个包含文件所有行的字符串数组,我们必须等待返回整个字符串数组才能访问该数组。

此方法接受字符编码作为可选参数,类似于 ReadLines 所做的。好吧,这个过程可能会引发一些异常,如 IO 异常。如果发生 I/O 错误,则会引发此异常;如果找不到您尝试打开的文件,则会引发另一个错误 FileNotFoundException。

算法

下面的算法将逐步介绍如何使用 File.ReadAllLines() 方法逐行读取文件内容。

下面讨论的算法引导我们创建程序。

步骤 1 − 创建一个字符串,用于存储文件路径的名称,请记住这是一个绝对路径。

步骤 2 − 接下来,通过使用 ReadAllLines,程序打开一个文本文件,读取其所有行,然后结束它。

步骤3 − 通过使用 Environment.Newline 获取为环境定义的换行符字符串。然后程序结束。

示例

以下是此过程的代码 −

using System;
using System.IO;

public class Example {
   public static void Main() {
      string fileloc = @"D:\ttpt\loc
ew.txt"; string[] lines = File.ReadAllLines(fileloc); Console.WriteLine(String.Join(Environment.NewLine, lines)); } }

输出

This is a file.
Hello from tutorials point.

首先需要创建一个字符串类型的变量,其中包含文件位置的地址。之后,程序将逐行读取文件。这里的区别在于,这些行是以字符串形式读取的。当在程序中使用 string.join 时,它们都会连接起来。

3. 使用 StreamReader.ReadLine() 方法

还有一种方法可以通过 StreamReader 类逐行读取文件。该方法是 StreamReader.ReadLine()。这将运行到文件末尾。

这有效,因为它从当前流中读取一行文本并将其作为字符串返回。这将从输入流中返回下一行,如果输入流已到达其结尾,则返回 null。这样它就到达了文件的末尾。

如果发生任何 I/O 错误,这里也会出现 I/O 异常。另一个异常是 OutOfMemoryException,当没有足够的内存来为返回的字符串创建缓冲区时会发生这种情况。

算法

下面的算法将逐步说明如何使用 StreamReader.ReadLine() 方法逐行读取文件内容。

下面讨论的算法将引导我们创建程序。

步骤 1 − 创建一个字符串,用于存储文件路径的名称,请记住这是一个绝对路径。

步骤 2 −  创建一个新的读取来读取文件的内容。

步骤 3 − while 循环运行直到文件末尾。当达到 null 时,即确定结束。

步骤 4 − 最后,在读取文件内容后,代码退出。

示例

以下是该过程的代码 −

using System;
using System.IO;

public class Example {
   public static void Main() {
      string fileloc = @"D:\ttpt\loc
ew.txt"; using (StreamReader read = new StreamReader(fileloc)) { string line; while ((line = read.ReadLine()) != null) { Console.WriteLine(line); } } } }

输出

This is a file.
Hello from tutorials point.

在此方法中,首先使用文件地址创建一个字符串。然后创建一个读取实例。它通过逐行读取内容转到空值,即文件末尾。

时间复杂度

因为在这里我们逐行读取文件,但一次完成。无论使用哪种方法,即 File.ReadLines()、Files.ReadAllLines() 和 StreamReader.ReadLine()。它们都是一次性读取文件。因此,这里每种方法的时间复杂度均为 O(1)。

结论

在本文中,我们广泛讨论了逐行读取文件内容的 C# 程序。我们了解了如何通过三种不同的方式完成它。其中两个来自 File 类,分别是 ReadLines() 和 ReadAllLines()。第三个来自 StreamReader 类。然后我们讨论了这三种技术的代码和算法。我们希望本文能帮助您增强有关 C# 的了解。


相关文章