从文本文件中读取错误

时间:2014-06-14 02:11:12

标签: c#

所以我有一个名为“NEW.txt”的文本文件,我想从控制台窗口中读取它的内容。我意识到皮肤上有一种不止一种方法,但我试图实现这一种

using (System.IO.StreamReader reader = new System.IO.StreamReader("NEW.txt"))
{
    String content = reader.ReadToEnd();
    Console.WriteLine(content);
}

但是我得到了错误 “mscorlib.dll中发生了'System.ObjectDisposedException'类型的未处理异常

其他信息:无法写入已关闭的TextWriter。“

什么是TextWriter以及它为什么关闭?

更新

       //using (System.IO.StreamWriter writer = new System.IO.StreamWriter("NEW.txt"))
       //     {
       //         System.Console.SetOut(writer);
       //         System.Console.WriteLine("Hello text file");
       //         System.Console.WriteLine("I'm writing to you from visual C#");
       //     }

       //This following part only works when the previous block is commented it out

        using (System.IO.StreamReader reader = new System.IO.StreamReader("NEW.txt"))
        {
            string content = reader.ReadToEnd();
            Console.WriteLine(content);

        }

假设问题是这一行“System.Console.SetOut(writer);”如何将输出流更改回控制台窗口?

1 个答案:

答案 0 :(得分:3)

这是你的代码。您注意到它仅在您在部分的顶部注释时才有效:

   //using (System.IO.StreamWriter writer = new System.IO.StreamWriter("NEW.txt"))
   //     {
   //         System.Console.SetOut(writer);
   //         System.Console.WriteLine("Hello text file");
   //         System.Console.WriteLine("I'm writing to you from visual C#");
   //     }

   //This following part only works when the previous block is commented it out

    using (System.IO.StreamReader reader = new System.IO.StreamReader("NEW.txt"))
    {
        string content = reader.ReadToEnd();
        Console.WriteLine(content);

    }

现在你已经包含了你要评论的代码,我在这里看到了问题......你正在为控制台设置一个StreamWriter作为'Out'。然后你关闭StreamWriter - 关闭相关的TextWriter。然后您尝试再次使用它,导致错误:TextWriter已关闭,因为您已按该代码关闭它。

要解决此问题,请更改评论代码以执行此操作:

   using (System.IO.StreamWriter writer = new System.IO.StreamWriter("NEW.txt"))
        {
            /* This next line is the root of your problem */
            //System.Console.SetOut(writer);

            /* Just write directly with `writer` */
            writer.WriteLine("Hello text file");
            writer.WriteLine("I'm writing to you from visual C#");
        }

此处无需通过Console。直接和作家一起写。