如何使用 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 中加载和读取文本文件,请按照下列步骤操作:

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

优质内容筛选与推荐>>
1、rTorrent终极优化攻略
2、西游记之设计模式原则——开放-封闭原则
3、react todelist
4、MyEclipse在线安装maven插件最新地址
5、单文件上传-flex版本


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn