FileSystemWatcher OnCreated 返回字符串?

FileSystemWatcher OnCreated returning string?

我想让 FileSystemWatcher 监视一个文件夹,一旦在里面创建了一个文件来获取文件名,那么在该文件可以被 File.OpenRead() 和 StreamReader

读取之后

我看过很多例子,但不完全是我的例子:

        public static void FileWatcher()
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"C:\Users\";
        watcher.NotifyFilter = NotifyFilters.LastWrite;
        watcher.Filter = "*.txt";
        watcher.Created += new FileSystemEventHandler(OnCreated);
        watcher.EnableRaisingEvents = true;
    }

    public static void OnCreated(object source, FileSystemEventArgs e)
    {
        string filename = Path.GetFileName(e.FullPath);
    }

我的问题是如何获取将在该文件夹中创建的文件名并将其路径和文件传递给,因为事件方法是空的:

const string fileName = @"C:\Users\.txt";
        using (var stream = File.OpenRead(fileName))
        using (var reader = new StreamReader(stream))

感谢任何帮助!

我建议将您的文件处理封装在一个单独的 class 中。

public class FileProcessor
{
      public void ProcessFile(string filePath)
       {
           using (var stream = File.OpenRead(filePath))
           //etc...

       }
}

然后实例化并调用它。

 public static void OnCreated(object source, FileSystemEventArgs e)
    {
       var processor = new FileProcessor();
       processor.ProcessFile(e.FullPath);
    }

或者如果您的方法与 Created 事件 class 相同

YourMethodName(e.FullPath);

你的方法应该有这样的签名

void YourMethodName (string filePath)
{
  //Process file
}