作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 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
方法执行。您可能必须创建一个类来同时包含 FileSystemWatcher
和 StreamWriter
,并且只需从 Main
方法实例化该类。
但是等等,还有更多!
如果您正在向 StreamWriter 写入数据,而另一个文件恰恰在那一刻创建了怎么办?您不能让两个线程同时写入单个 StreamWriter,否则不好的事情是不可避免的。因此,您需要使用某种锁定来保护对 StreamWriter 的访问。
关于c# - FileSystemWatcher - 如何将输出通过管道传输到文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075940/
我是一名优秀的程序员,十分优秀!