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异常。如果发生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.
在此方法中,也首先创建一个包含文件地址的字符串。然后创建一个读取实例。它通过逐行读取内容到达null,即文件的末尾。
时间复杂度
由于我们在这里逐行读取文件,但一次读取所有内容。无论使用什么方法,即File.ReadLines()、Files.ReadAllLines()和StreamReader.ReadLine()。所有这些都一次性读取文件。因此,这里每种方法的时间复杂度都是O(1)。
结论
在本文中,我们广泛讨论了C#程序逐行读取文件内容的方法。我们学习了如何通过三种不同的方式实现:两种来自File类,分别是ReadLines()和ReadAllLines();第三种来自StreamReader类。然后我们讨论了这三种技术的代码和算法。我们希望本文能帮助您增强对C#的了解。