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

打开和读取文件进行读取访问是输入/输出 (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 命名空间。对 System、System.IO 和 System.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 方法每次只读取文件中的一行。当到达文件结尾时,此方法返回空值,这可以用于结束循环。在读取文件中的每一行时,可以使用  ArrayList 的  Add 方法将这些行插入  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/savageworld/archive/2006/08/17/478951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值