gpt4 book ai didi

c# - FileSystemWatcher - 如何将输出通过管道传输到文本文件?

转载 作者:可可西里 更新时间:2023-11-01 09:49:19 25 4
gpt4 key购买 nike

我正在使用 FileSystemWatcher 类。我正在尝试将输出通过管道传输到文本文件。我已经添加了 StreamWriter fileWriter = new StreamWriter("test.txt"); 但没有任何输出到文件!我哪里错了?

class Program
{
static void Main(string[] args)
{
string dirPath = "C:\\";

FileSystemWatcher fileWatcher = new FileSystemWatcher(dirPath);
fileWatcher.IncludeSubdirectories = true;
fileWatcher.Filter = "*.exe";
// fileWatcher.Filter = "C:\\$Recycle.Bin";
// fileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed);
fileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);
// fileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);
// fileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);
fileWatcher.EnableRaisingEvents = true;
StreamWriter fileWriter = new StreamWriter("test.txt");
Console.ReadKey();
}
}

最佳答案

实际写入输出流的代码需要在 FileWatcher_Created 事件处理程序中。您只能在创建文件时运行的代码中写出文件已创建。

这意味着事件处理程序需要访问您创建的 StreamWriter,否则它需要自己打开输出文件,写入一个值,然后在每次事件触发时关闭它.

由于您不能将 StreamWriter 作为参数传递给事件处理程序,因此让事件处理程序访问它的唯一方法是将其设为类级变量,您可以不要从静态 Main 方法执行。您可能必须创建一个类来同时包含 FileSystemWatcherStreamWriter,并且只需从 Main 方法实例化该类。

但是等等,还有更多!

如果您正在向 StreamWriter 写入数据,而另一个文件恰恰在那一刻创建了怎么办?您不能让两个线程同时写入单个 StreamWriter,否则不好的事情是不可避免的。因此,您需要使用某种锁定来保护对 StreamWriter 的访问。

关于c# - FileSystemWatcher - 如何将输出通过管道传输到文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com