System.ObjectDisposedException:'无法写入已关闭的TextWriter。放样错误

时间:2018-10-24 03:44:50

标签: c# streamwriter console.setout

我正在编写一个程序,该程序可以查看文件夹中的所有文件,然后将控制台输出写入新的txt文件,但是当我写1行后运行该程序时,它会显示一条错误消息

  

System.ObjectDisposedException:'无法写入关闭的TextWriter。

这是代码:

string[] files = Directory.GetFiles(@"C:\CSA FIles(test)\", "*.*", 
                                    SearchOption.AllDirectories);

        foreach (string file in files)
        {

            if (File.GetLastWriteTime(file)
                < DateTime.Now.AddMonths(-3))
            {

               Console.WriteLine(file);


                using (StreamWriter writer = new StreamWriter(@"C:\for checking\sample.txt"))
                 {
                     Console.SetOut(writer);
                     Act();
                 }
                 void Act()
                 {
                     Console.WriteLine(file);
                 }`

1 个答案:

答案 0 :(得分:0)

正如罗恩(Ron)在评论中所说,StreamWriter对象在被Console使用的同时被处置。最好在处置StreamWriter之前恢复原始流。

using (StreamWriter writer = new StreamWriter(@"C:\for checking\sample.txt"))
{
    var originalStream = Console.Out;
    Console.SetOut(writer);
    Act();
    Console.SetOut(originalStream);
} //writer object is disposed here

Microsoft提供了一个示例here