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

使用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#的了解。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程