如何使用 System.IO 和 Visual C# 读取文本文件
本文分步介绍了如何从文本文件 (.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 中加载和读取文本文件,请按照下列步骤操作:
- 启动 Microsoft Visual Studio 2005 或 Microsoft Visual Studio .NET。
- 在 Visual C# 中创建一个新的控制台应用程序。Visual Studio 会为您创建一个 Static Class 和一个空的 Main() 过程。
- 确保项目至少引用了 System 命名空间。对 System、System.IO 和 System.Collections 命名空间使用 using 语句,这样以后就无需在代码中限定这些命名空间中的声明。这些语句必须位于任何其他声明之前。
using System; using System.IO; using System.Collections;
- 要打开一个文件以进行读取,请创建StreamReader 对象的一个新实例,并将该文件的路径传递到构造函数中,如下所示:
StreamReader objReader = new StreamReader("c:\\test.txt");
- 您必须使用字符串变量,以便处理时将文件的每一行存储到该变量中。由于要向 ArrayList 中添加这些行,因此还需声明并创建一个此类型的对象。
string sLine=""; ArrayList arrText = new ArrayList();
- 读取该文件有很多种方法,其中包括一次性读取整个文件的 ReadToEnd 方法。但在本示例中,可以使用 ReadLine 方法每次只读取文件中的一行。当到达文件结尾时,此方法返回空值,这可以用于结束循环。在读取文件中的每一行时,可以使用 ArrayList 的 Add 方法将这些行插入 ArrayList 类中。
while (sLine != null) {sLine = objReader.ReadLine();if (sLine != null)arrText.Add(sLine); } objReader.Close();
- 使用 For Each 循环将新填充的 ArrayList 内容写入控制台,如下所示:
foreach (string sOutput in arrText)Console.WriteLine(sOutput); Console.ReadLine();
- 保存并运行您的代码,它将向控制台生成文件的内容列表。
完整代码列表
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# 读取文本文件相关推荐
- 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件
安卓上为什么不能用system.io.file读取streammingAssets目录下的文件 首先,看文档: Streaming Assets Most assets in Unity are co ...
- visual studio 2019 未能在命名空间“System.IO.Ports”中找到类型名“SerialPort”
在vs2019以前的版本,只要using System.IO.Ports就可以用SerialPort. 这里需要自己手动添加相关引用. 工具–>Nuget包管理器(N)–>管理解决方案的N ...
- System.IO.Pipelines: .NET高性能IO
本文翻译自dotnet团队博客文章:https://blogs.msdn.microsoft.com/dotnet/2018/07/09/system-io-pipelines-high-perfor ...
- 使用.NET System.IO.Pipelines和Kestrel套接字库创建Redis客户端
目录 背景 介绍 Redis协议 软件设计 下载最新的存储库存档 本文是关于为Redis服务器创建异步客户端的系列文章中的第一篇,该客户端低分配,因此GC压力小,数据复制最少.这是使用技术完成的,这些 ...
- C# FileInfo(System.IO)
环境:Visual Studio 2017,.NET Framework 4.0 本文参考MSDN : https://docs.microsoft.com/zh-cn/dotnet/api/syst ...
- .Net 文件流 System.IO之Stream
转自 :http://www.cnblogs.com/yukaizhao/archive/2011/07/28/stream.html Stream在msdn的定义:提供字节序列的一般性视图(prov ...
- 使用System.IO.Packaging.Package进行文件压缩所产生的问题
最近在项目中需要进行文件压缩,即将打包好的压缩文件提供给用户,用户进行下载. 获知微软提供了一个System.IO.Packaging.Package的类,从而可以进行打包,那么我就进行了使用.谁知道 ...
- System.IO 的三个抽象类
System.IO 命名空间 抽象类有:TextWriter,TextReader,Stream TextWriter抽象类 方法提供以下功能: 写入文本流或者后面跟着结束符 清理当前编写器的缓冲区 ...
- 使用WinAPI替代System.IO.Directory
目录 介绍 使用代码 代码如何运作 下载源代码 - 22.6 KB 介绍 最近,我正在做一个需要读取Windows目录内容的项目,所以我使用了.NET提供的System.IO.Directory类中的 ...
最新文章
- Spring scope解惑
- AI 质检学习报告——实践篇——第二步:实现图片识字
- oracle快捷语句框架中,Oracle框架:PL/SQL编程:
- php xdebug 教程视频_PHP Xdebug 是什么?
- SpringBoot2.1.5 (35)---安全
- 编程语言对比 容器
- .net生成缩略图,支持等比例缩放,加水印
- efs解密-Advanced EFS Data Recovery2.1-含注册KEY
- Nginx 日志配置实践
- [转帖]int main(int argc,char * argv[]) windows 下的使用
- itextpdf识别不了一些中文字体的问题
- Linux驱动开发-编写MMA7660三轴加速度传感器
- Delphi中小试Opencv--图像差异对比(大家来找茬辅助实现cvAbsDiff函数的使用)
- 找软件测试工作自测,测试经验分享:做一个靠谱的软件测试人员
- 如何生成公众号带参数二维码
- Jquery如何去掉复选框的勾
- 关于人机智能的几点思考
- 金蝶、用友等引入凭证导入常见错误分析
- 英语不好能学python吗_英语和数学不好的人能学会Python编程吗?
- K8S云原生环境渗透学习
热门文章
- 如何在30前成为“富翁”?
- 让 typora和word一样好用
- C++建立动态二维数组
- win10 php mysql_win10 下 apache php mysql 开发环境安装
- dearpygui-0.6.6 以前的蛇变回了应该有的样子
- 给Resnet加人工经验提升30%的准确率
- python django开发问题
- Java并发编程高级篇(八):在执行器中取消任务
- [JavaWebService-axis]-环境搭建
- 【MyBatis框架】MyBatis入门程序第一部分