HOW TO:使用 System.IO 和 Visual C# .NET 读取文本文件 (From MSDN)

本文的发布号曾为 CHS306777
本文讨论一种 Microsoft 产品的 Beta 版本。本文中的信息按“原样”提供,如有更改恕不另行通知。

对于该 Beta 产品,Microsoft 不提供正式的产品支持。有关获取 Beta 版支持的信息,请参见 Beta 产品文件中包括的文档资料,或查看您下载此版本的站点。

有关本文的 Microsoft Visual Basic .NET 版本,请参见 CHS302309

本任务的内容

概要

本文演示了如何从文本文件中检索信息,并使用 ArrayList 类向用户显示该信息。

返回页首

要求

Microsoft Visual C# .NET

返回页首

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

打开和读取文件进行读取访问是输入/输出 (IO) 功能的一个非常重要的部分,即使您不需要写入到相关文件,也是如此。 本示例打开一个文件进行读取,这适用于读取文本文件,但不适用于读取二进制文件。 本示例使用多个可用于打开文件的方法之一。 虽然很多数据结构都可以用于存储从文件中检索到的信息,但是, ArrayList 类是使用最简便的结构。 为了打开文件和从文件中读取,本示例使用了 System.IO 名称空间中的对象,尤其是 System.IO.StreamReader 类。

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

若要在 Visual C# .NET 中加载和读取文本文件,请按照下列步骤操作:
  1. 打开 Visual Studio .NET。在 C# 中新建控制台应用程序。 Visual Studio 给您创建一个静态类以及一个空的 Main() 过程。
  2. 确保该项目至少引用了 System 名称空间。 对 SystemSystem.IO System.Collections 名称空间使用 using 语句,这样,在后面的代码中就不需要限定这些名称空间中的声明了。 这些语句必须位于所有其他声明之前。
    using System;
    using System.IO;
    using System.Collections;
  3. 若要打开一个文件以进行读取,请创建 StreamReader 对象的一个新实例,并将该文件的路径传递到构造函数中(如下所示):
    StreamReader objReader = new StreamReader("c://test.txt");
  4. 您需要一个字符串变量,处理时将文件的每一行存储到该变量中。 因为将把这些行添加到一个 ArrayList 中,所以还应该声明和创建一个该类型的对象。
    string sLine="";
    ArrayList arrText = new ArrayList();
  5. 读取该文件有很多种方法,其中包括一次性读取整个文件的 ReadToEnd 方法。 但是,在本示例中,您可以使用 ReadLine 方法每次只读取文件中的一行。 当到达文件结尾时,此方法返回空值,这可以用于结束循环。 当您从文件中读取每一行时,可以使用 ArrayList Add 方法将这些行插入到 ArrayList 类中。
    while (sLine != null)
    {
    	sLine = objReader.ReadLine();
    	if (sLine != null)
    		arrText.Add(sLine);
    }
    objReader.Close();
  6. 使用 For Each 循环将新填充的 ArrayList 内容写入到控制台(如下所示):
    foreach (string sOutput in arrText)
    	Console.WriteLine(sOutput);
    Console.ReadLine();
  7. 保存并运行您的代码,它将给控制台生成文件的内容列表。
返回页首

完整代码列表

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 块来处理这些常见问题。

返回页首

参考

有关更多信息,请访问以下 Microsoft .NET SDK 快速入门教程 Web 站点:

http://www.gotdotnet.com/quickstart

返回页首













这篇文章中的信息适用于:

  • Microsoft Visual C# .NET Beta 2
最近更新:2001-11-2 (1.0)
关键字kbhowto kbHOWTOmaster kbnokeyword KB306777 kbAudDeveloper
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值