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:ttptlocew.txt";      IEnumerable 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 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:ttptlocew.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:ttptlocew.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# 程序逐行读取文件内容的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 10:33:46
下一篇 2025年12月11日 11:23:14

相关推荐

  • C# Asp.net Core中启动类的Configure()方法有什么用?

    configure 方法存在于 ASP.NET Core 应用程序的启动类中 Configure 方法是您可以配置应用程序请求管道的地方为您的应用程序使用内置提供的 IApplicationBuilder 实例IoC容器 Configure方法默认有这三个参数IApplicationBuilder,…

    2025年12月17日
    000
  • C# 中的 IList 接口有什么作用?

    IList 接口有一个非通用的对象集合,可以通过索引单独访问。 以下是 C# 中 IList 接口的属性 – 先生编号 属性名称和说明 th> 1Count 获取数字ICollection 中包含的元素数量。 2isFixedSize 获取一个值,指示 IList 是否具有固定大小…

    2025年12月17日
    000
  • C# 异常处理最佳实践

    C# 中异常处理的最佳实践基于记录异常。日志应该保存在日志库中以记录异常。 以下是在 C# 中处理异常时应遵循的最佳实践 – 使用 log4net、NLog 和其他用于相同目的的框架记录异常。将异常记录到文件中,并将日志发送到各种其他目标,例如数据库、电子邮件等。您应该在应用程序中记录每…

    2025年12月17日
    000
  • 如何在 C# 中使用反射来显示方法和属性?

    反射是在代码中描述类型、方法和字段的元数据的过程。命名空间 System.Reflection 使您能够获取有关已加载程序集、其中的元素(例如类、方法和值类型)的数据。 System.Reflection 的类有很多,但最常用的是 Assembly、AssemblyName、ConstructorI…

    2025年12月17日
    000
  • C# 中列表和字典有什么区别?

    字典是 C# 中键和值的集合。 Dictionary 包含在 System.Collection.Generics 命名空间中。 Dictionary 是一个泛型类型,如果您尝试查找不存在的键,则会返回错误。 List 集合是一个泛型类,可以存储任何数据类型来创建列表。 列表是一组项目 &#8211…

    2025年12月17日
    000
  • C#有哪些隐藏的特性?

    以下是 C# 隐藏的或鲜为人知的有用功能 – Lambda 表达式 C# 中的 lambda 表达式描述了一种模式。它在表达式上下文中具有标记=>。这称为 go to 运算符,并在声明 lambda 表达式时使用。 可空 C# 提供了一种特殊的数据类型,可空类型,您可以为其分配正常…

    2025年12月17日
    000
  • 在C#中,结构体是什么?

    在C#中,结构是一种值类型数据类型。它可以帮助您使单个变量持有不同数据类型的相关数据。使用struct关键字来创建结构。 C#结构具有以下特点: 结构可以有方法、字段、索引器、属性、运算符方法和事件。 结构可以有定义的构造函数,但没有析构函数。但是,您不能为结构定义默认构造函数。默认构造函数是自动定…

    2025年12月17日
    000
  • C# 程序在不使用 Reverse() 方法的情况下反转字符串

    在编程中,有很多情况我们需要反转字符串。最常见的方法之一是使用 Reverse() 方法。但是,在某些情况下我们无法使用此方法,而必须使用其他技术来反转字符串。在本文中,我们将探讨如何在不使用 Reverse() 方法的情况下在 C# 中反转字符串。 在深入研究代码之前,让我们首先了解什么是字符串。…

    2025年12月17日
    000
  • NonActionAttribute 在 ASP .Net MVC C# 中的意义是什么?

    当我们想要在控制器中使用公共方法但又不想将其视为操作方法时,可以使用 nonaction 属性。操作方法是控制器中的公共方法,可以使用 url 调用。因此,默认情况下,如果控制器中有任何公共方法,则可以使用 url 请求来调用它。要限制对控制器中公共方法的访问,可以使用 nonaction 属性。 …

    2025年12月17日
    000
  • C# 中的 Deque 类

    Deque 类使用双向链表来实现其元素集合。双向链表应该有两个节点,即前节点和后节点。这有助于在 Deque 的正面和背面添加元素。 使用 Deque 类,您可以从两侧添加和删除元素。这就是为什么 Deque 被称为双端队列。 Deque 类在 Queue 类中有以下方法 – Clear…

    2025年12月17日
    000
  • 在 C# 中使您的集合线程安全

    .NET Framework 4 引入了 System.Collections.Concurrent 命名空间。它有几个线程安全且可扩展的集合类。这些集合称为并发集合,因为它们可以同时被多个线程访问。 以下并发集合类型使用轻量级同步机制:SpinLock、SpinWait 等。这些是 .NET Fr…

    2025年12月17日
    000
  • 解释泛型在 C# 中的工作原理

    泛型是在 C# 2.0 版本中添加的,是该语言中最重要的概念之一。它们使您能够编写在编译时类型安全的可重用、高性能代码。使用泛型,您可以在代码中使用某种类型,而无需事先了解该类型。 泛型在 .NET 中的许多地方使用,包括集合、委托和异步代码。使用泛型,您不需要事先知道集合的大小,并且可以将泛型与任…

    2025年12月17日
    000
  • C#中快速将Decimal转换为其他基数

    要快速将十进制转换为其他基数,请使用堆栈。让我们看一个例子。 首先,我将变量“baseNum”设置为2 int baseNum = 2; 同样,如果你想要另一个基地,那么 – // base 8int baseNum = 8;// base 10int baseNum = 10; 获取到…

    2025年12月17日
    000
  • ASP .Net MVC C# 中的 ViewData 是什么?

    ViewData 是使用字符串作为键来存储和检索的对象的字典。它用于将数据从控制器传输到视图。由于 ViewData 是一个字典,所以它包含键值对,其中每个键必须是字符串。仅查看数据传输数据从控制器到视图,反之亦然。仅在当前请求期间有效。 在 viewdata 中存储数据 – ViewD…

    2025年12月17日
    000
  • 如何验证 C# 单元测试中抛出的异常?

    我们可以通过两种方法在单元测试中验证异常。 使用 Assert.ThrowsException使用 ExpectedException 属性。 示例 让我们考虑一个需要测试抛出异常的 StringAppend 方法。 using System;namespace DemoApplication { …

    2025年12月17日
    000
  • 如何在 C# 中运行多个异步任务并等待它们全部完成?

    Task.WaitAll 会阻塞当前线程,直到所有其他任务完成执行。 Task.WhenAll 方法用于创建一个当且仅当所有其他任务都完成时,该任务才会完成。在第一个示例中,我们可以看到,使用 Task.WhenAll 时,任务完成会在其他任务完成之前执行。这意味着 Task.WhenAll 不会阻…

    2025年12月17日
    000
  • C#中如何检查字符串数组中是否包含字符串数组中的特定工作?

    In C#, String.Contains() is a string method. This method is used to check whether the substring occurs within a given string or not. It returns the bo…

    2025年12月17日
    000
  • C# 程序读取字符串并计算所有数字的总和

    C# 是一种流行的面向对象的编程语言,用于开发 Windows 应用程序、Web 应用程序和游戏。在本文中,我们将讨论如何编写一个 C# 程序来读取一个字符串,并找出字符串中所有数字的总和。 第 1 步:读取输入字符串 该程序的第一步是读取用户输入的字符串。我们可以使用 Console.ReadLi…

    2025年12月17日
    000
  • C# 泛型与 C++ 模板

    C# 泛型和 C++ 模板提供对参数化类型的支持。以下是差异 – 灵活性 C++ 模板比 C# 泛型更灵活 显式专业化 不支持显式专业化by C# 类型参数 类型参数不能作为C#中泛型类型的基类 立即学习“C++免费学习笔记(深入)”; C#不允许类型参数有默认值 运行时 C++ 模板具…

    2025年12月17日
    000
  • C# 中的检查异常与非检查异常

    您可以在检查或未检查上下文中执行 C# 中的语句。 在检查中,算术溢出会引发异常,而在未检查上下文中,算术溢出将被忽略。 检查异常 使用checked关键字显式启用整型算术运算和转换的溢出检查。为此,只需设置checked关键字即可。 可以通过编译器选项、环境配置或使用checked关键字来启用溢出…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信