在这里,我们将学习编写一个 C# 程序来逐行读取文件内容。有多种方法可以做到这一点。我们将一一讨论。
文件处理是用 C# 完成的。大多数情况下,文件用于存储数据。通俗地说,文件处理或文件管理是各种过程,例如创建文件、读取文件、写入文件、附加文件等。文件的读取和写入是文件处理中最常见的两个操作。
逐行读取文件内容的第一种方法是使用 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\locew.txt"; IEnumerable<string> lines = File.ReadLines(fileloc); Console.WriteLine(String.Join(Environment.NewLine, lines)); } }
This is a file. Hello from tutorials point.
首先需要创建一个字符串类型的变量,其中包含文件位置的地址。之后,在程序中逐行读取文件。
另一种逐行读取文件内容的方法是使用 File.ReadAllLines() 方法。对于大数据文件,我们不应该将 ReadAllLines 用作 ReadAllLines,与返回 Enumerable 的 ReadLines 不同,ReadAllLines 给出一个包含文件所有行的字符串数组,我们必须等待返回整个字符串数组才能访问该数组。
此方法接受字符编码作为可选参数,类似于 ReadLines 的做法。那么这个过程可能会抛出一些异常,比如IO Exception。如果发生 I/O 错误,则会抛出此错误;如果找不到尝试打开的文件,则会抛出另一个错误 FileNotFoundException。
下面的算法将给出使用 File.ReadAllLines() 方法逐行读取文件内容的分步过程。
下面讨论的算法引导我们创建程序。
第 1 步 − 创建一个字符串来存储文件路径的名称,记住这是一个绝对路径。
第 2 步 − 接下来,程序使用 ReadAllLines 打开一个文本文件,读取其所有行,然后结束它。
p>
第 3 步 − 通过使用Environment.Newline获取为环境定义的换行符字符串。然后程序结束。
以下是此过程的代码 -
using System; using System.IO; public class Example { public static void Main() { string fileloc = @"D:\ttpt\locew.txt"; string[] lines = File.ReadAllLines(fileloc); Console.WriteLine(String.Join(Environment.NewLine, lines)); } }
This is a file. Hello from tutorials point.
首先需要创建一个字符串类型的变量,其中包含文件位置的地址。之后,在程序中逐行读取该文件。在这里,不同之处在于这些行是在字符串中读取的。它们都是在程序中使用string.join时连接起来的。
还有一种通过 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\locew.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# 的知识。
以上是C# 程序逐行读取文件内容的详细内容。更多信息请关注PHP中文网其他相关文章!