所以我有一个名为“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);”如何将输出流更改回控制台窗口?
答案 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
。直接和作家一起写。