本文分步介绍了如何从文本文件 (.txt) 检索信息,然后使用 ArrayList 类向用户显示该信息。

回到顶端

要求

Microsoft Visual C# 2005 或 Microsoft Visual C# .NET

回到顶端

在 Visual C# 2005 或 Visual C# .NET 中读取文本文件

打开和读取文件进行读取访问是输入/输出 (IO) 功能的一个非常重要的部分,即使您不需要写入到相关文件,也是如此。本示例打开一个文件进行读取,这适用于读取文本文件,但不适用于读取二进制文件。本示例使用多个可用于打开文件的方法之一。

虽然很多数据结构都可以用于存储从文件中检索到的信息,但是,ArrayList 类是使用最简便的结构。为打开并读取文件,本示例使用了 System.IO 命名空间中的对象,尤其是 System.IO.StreamReader 类。

注意:本示例需要某种形式的文本文件 (.txt) 以从中进行读取。

要在 Visual C# 2005 或 Visual C# .NET 中加载和读取文本文件,请按照下列步骤操作:

  1. 启动 Microsoft Visual Studio 2005 或 Microsoft Visual Studio .NET。
  2. 在 Visual C# 中创建一个新的控制台应用程序。Visual Studio 会为您创建一个 Static Class 和一个空的 Main() 过程。
  3. 确保项目至少引用了 System 命名空间。对 SystemSystem.IOSystem.Collections 命名空间使用 using 语句,这样以后就无需在代码中限定这些命名空间中的声明。这些语句必须位于任何其他声明之前。
    using System;
    using System.IO;
    using System.Collections;
    

  4. 要打开一个文件以进行读取,请创建StreamReader 对象的一个新实例,并将该文件的路径传递到构造函数中,如下所示:
    StreamReader objReader = new StreamReader("c:\\test.txt");
    

  5. 您必须使用字符串变量,以便处理时将文件的每一行存储到该变量中。由于要向 ArrayList 中添加这些行,因此还需声明并创建一个此类型的对象。
    string sLine="";
    ArrayList arrText = new ArrayList();
    

  6. 读取该文件有很多种方法,其中包括一次性读取整个文件的 ReadToEnd 方法。但在本示例中,可以使用 ReadLine 方法每次只读取文件中的一行。当到达文件结尾时,此方法返回空值,这可以用于结束循环。在读取文件中的每一行时,可以使用 ArrayListAdd 方法将这些行插入 ArrayList 类中。
    while (sLine != null)
    {sLine = objReader.ReadLine();if (sLine != null)arrText.Add(sLine);
    }
    objReader.Close();
    

  7. 使用 For Each 循环将新填充的 ArrayList 内容写入控制台,如下所示:
    foreach (string sOutput in arrText)Console.WriteLine(sOutput);
    Console.ReadLine();
    

  8. 保存并运行您的代码,它将向控制台生成文件的内容列表。
回到顶端

完整代码列表

using System;
using System.IO;
using System.Collections;namespace TextFileReader_csharp
{/// <summary>/// Summary description for Class1./// </summary>class Class1{static void Main(string[] args){StreamReader objReader = new StreamReader("c:\\test.txt");string sLine="";ArrayList arrText = new ArrayList();while (sLine != null){sLine = objReader.ReadLine();if (sLine != null)arrText.Add(sLine);}objReader.Close();foreach (string sOutput in arrText)Console.WriteLine(sOutput);Console.ReadLine();}}
}

回到顶端

疑难解答

在处理文件 I/O 时要注意一些问题,其中包括以下事项:

  • 无论何时访问文件,尝试读取或写入的文件可能不在系统上,或者正在使用当中。
  • 在处理文件之前,本示例先将整个文件读取到内存中。您可能会遇到文件太大而无法存储到内存中,或者没有权限访问该文件的情况。

以上的任一情形都会引发异常。最好始终提供一个 try...catch 块来处理这些常见问题。

转载于:https://www.cnblogs.com/vibratea/archive/2009/07/27/1531900.html

如何使用 System.IO 和 Visual C# 读取文本文件相关推荐

  1. 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件

    安卓上为什么不能用system.io.file读取streammingAssets目录下的文件 首先,看文档: Streaming Assets Most assets in Unity are co ...

  2. visual studio 2019 未能在命名空间“System.IO.Ports”中找到类型名“SerialPort”

    在vs2019以前的版本,只要using System.IO.Ports就可以用SerialPort. 这里需要自己手动添加相关引用. 工具–>Nuget包管理器(N)–>管理解决方案的N ...

  3. System.IO.Pipelines: .NET高性能IO

    本文翻译自dotnet团队博客文章:https://blogs.msdn.microsoft.com/dotnet/2018/07/09/system-io-pipelines-high-perfor ...

  4. 使用.NET System.IO.Pipelines和Kestrel套接字库创建Redis客户端

    目录 背景 介绍 Redis协议 软件设计 下载最新的存储库存档 本文是关于为Redis服务器创建异步客户端的系列文章中的第一篇,该客户端低分配,因此GC压力小,数据复制最少.这是使用技术完成的,这些 ...

  5. C# FileInfo(System.IO)

    环境:Visual Studio 2017,.NET Framework 4.0 本文参考MSDN : https://docs.microsoft.com/zh-cn/dotnet/api/syst ...

  6. .Net 文件流 System.IO之Stream

    转自 :http://www.cnblogs.com/yukaizhao/archive/2011/07/28/stream.html Stream在msdn的定义:提供字节序列的一般性视图(prov ...

  7. 使用System.IO.Packaging.Package进行文件压缩所产生的问题

    最近在项目中需要进行文件压缩,即将打包好的压缩文件提供给用户,用户进行下载. 获知微软提供了一个System.IO.Packaging.Package的类,从而可以进行打包,那么我就进行了使用.谁知道 ...

  8. System.IO 的三个抽象类

    System.IO 命名空间 抽象类有:TextWriter,TextReader,Stream TextWriter抽象类 方法提供以下功能: 写入文本流或者后面跟着结束符 清理当前编写器的缓冲区 ...

  9. 使用WinAPI替代System.IO.Directory

    目录 介绍 使用代码 代码如何运作 下载源代码 - 22.6 KB 介绍 最近,我正在做一个需要读取Windows目录内容的项目,所以我使用了.NET提供的System.IO.Directory类中的 ...

最新文章

  1. Spring scope解惑
  2. AI 质检学习报告——实践篇——第二步:实现图片识字
  3. oracle快捷语句框架中,Oracle框架:PL/SQL编程:
  4. php xdebug 教程视频_PHP Xdebug 是什么?
  5. SpringBoot2.1.5 (35)---安全
  6. 编程语言对比 容器
  7. .net生成缩略图,支持等比例缩放,加水印
  8. efs解密-Advanced EFS Data Recovery2.1-含注册KEY
  9. Nginx 日志配置实践
  10. [转帖]int main(int argc,char * argv[]) windows 下的使用
  11. itextpdf识别不了一些中文字体的问题
  12. Linux驱动开发-编写MMA7660三轴加速度传感器
  13. Delphi中小试Opencv--图像差异对比(大家来找茬辅助实现cvAbsDiff函数的使用)
  14. 找软件测试工作自测,测试经验分享:做一个靠谱的软件测试人员
  15. 如何生成公众号带参数二维码
  16. Jquery如何去掉复选框的勾
  17. 关于人机智能的几点思考
  18. 金蝶、用友等引入凭证导入常见错误分析
  19. 英语不好能学python吗_英语和数学不好的人能学会Python编程吗?
  20. K8S云原生环境渗透学习

热门文章

  1. 如何在30前成为“富翁”?
  2. 让 typora和word一样好用
  3. C++建立动态二维数组
  4. win10 php mysql_win10 下 apache php mysql 开发环境安装
  5. dearpygui-0.6.6 以前的蛇变回了应该有的样子
  6. 给Resnet加人工经验提升30%的准确率
  7. python django开发问题
  8. Java并发编程高级篇(八):在执行器中取消任务
  9. [JavaWebService-axis]-环境搭建
  10. 【MyBatis框架】MyBatis入门程序第一部分