C# 程序逐行读取文件内容
简介
在这里,我们将学习编写一个 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# 的了解。

