使用 System.IO 的 stringreader 和 Visual C# 读取中文文本文件

1. 打开 Visual Studio .2005。在 C# 中新建控制台应用程序。 Visual Studio 给您创建一个静态类以及一个空的 Main() 过程。
2. 确保该项目至少引用了 System 名称空间。 对 Systemsystem.io System.Collections 名称空间使用 using 语句,这样,在后面的代码中就不需要限定这些名称空间中的声明了。 这些语句必须位于所有其他声明之前。
using System;

            using System.IO;
using System.Text;

            using System.Collections;
3. 若要打开一个文件以进行读取,请创建 StreamReader 对象的一个新实例,并将该文件的路径传递到构造函数中(如下所示),使用Encoding.Default可以是读取的中文不为乱码
StreamReader sr = new StreamReader(@"c:\\test.txt",Encoding.Default);
4. 您需要一个字符串变量,处理时将文件的每一行存储到该变量中。 因为将把这些行添加到一个 ArrayList 中,所以还应该声明和创建一个该类型的对象。
string sLine="";

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

            {

            sLine = sr.ReadLine();

            if (sLine != null)

            arrText.Add(sLine);

            }

            sr.Close();
6. 使用 For Each 循环将新填充的 ArrayList 内容写入到控制台(如下所示):
foreach (string Line in arrText)

            Console.WriteLine(Line);

            Console.ReadLine();
7. 保存并运行您的代码,它将给控制台生成文件的内容列表。
 

完整代码列表

 

using System;
using System.Collections;
using System.Text;
using System.IO;

namespace homework
{
    class Document
    {
        public static void Read()
        {
            try
            {
                StreamReader sr = new StreamReader(@"c:\\test.txt",Encoding.Default);
                ArrayList arrText = new ArrayList();
                String sLine = "";

                while (sLine != null)
                {
                    sLine = sr.ReadLine();
                    if (sLine != "")
                        arrText.Add(sLine);
                }
                sr.Close();

                foreach (String Line in arrText)
                    Console.WriteLine(Line);
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

    }
    class work
    {
        static void Main(string[] args)
        {
            Document.Read();
        }
    }
}

注意事项 

在处理文件 I/O 时要注意一些问题,其中包括以下事项:
? 无论何时访问某个文件,要读取或写入的文件都有可能不在系统上,或者正在使用当中。
? 在处理文件之前,本示例先将整个文件读取到内存中。 您可能会遇到文件太大而无法存储到内存中,或者没有权限访问该文件的情况。
以上的任何情形都会引发一个异常。 最好始终提供一个 try...catch 块来处理这些常见问题。

你可能感兴趣的:(stringreader)