使用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用于大数据文件,因为与返回Enumerable的ReadLines不同,ReadAllLines返回一个包含文件所有行的字符串数组,我们必须等待整个字符串数组返回再访问该数组。
这个方法可以接受一个字符编码作为可选参数,类似于ReadLines。这个过程可能会抛出一些异常,如IO Exception。如果发生I/O错误,将抛出IOException。如果找不到要打开的文件,则将抛出另一个错误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 Exception。另一个异常是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.
在这种方法中,首先创建一个字符串与文件地址。然后创建一个读取实例。通过逐行读取内容来进入null,即文件的结尾。
时间复杂度
由于在这里逐行读取文件,但是一次性读取所有行。无论使用的方法是File.ReadLines()、Files.ReadAllLines()还是StreamReader.ReadLine(),它们都是一次性读取文件。因此,这里每种方法的时间复杂度为O(1)。
结论
在本文中,我们广泛讨论了C#编程读取文件逐行内容。我们了解了三种不同的方法:从File类中读取,其中有ReadLines()和ReadAllLines()函数。第三种方法是从StreamReader类中读取。然后,我们讨论了三种技术的代码和算法。我们希望本文可以帮助您增强对C#的了解。