我正在编写一个可以查看文件夹中所有文件的程序,然后将控制台输出写入新的 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在这里提供一个示例。