System.ObjectDisposedException: SetOut 中的 'Cannot write to a closed TextWriter.' 错误



我正在编写一个可以查看文件夹中所有文件的程序,然后将控制台输出写入新的 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 checkingsample.txt"))
{
Console.SetOut(writer);
Act();
}
void Act()
{
Console.WriteLine(file);
}`

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

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

Microsoft在这里提供一个示例。

相关内容

最新更新