c# - 使用 FileSystemWatcher 监视文件创建并在删除前复制它

标签 c# filesystemwatcher

我们有一个第 3 方应用程序,可以将文件写入目录,然后将其删除。 我们想在删除该文件之前复制该文件。

我们有这个:

    FileSystemWatcher watcher;

    private void WatchForFileDrop()
    {
        watcher = new FileSystemWatcher();
        watcher.Path = "c:\\FileDrop";
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName;
        watcher.Filter = "*.txt";
        watcher.Created += new FileSystemEventHandler(OnCreated);
        watcher.EnableRaisingEvents = true;
    }

    private void OnCreated(object source, FileSystemEventArgs e)
    {
        //Copy the file to the file drop location
        System.IO.File.Copy(e.FullPath, "C:\\FileDropCopy\\" + e.Name);
    }

FileSystemWatcher 确实有效。它将看到文件已创建并转到 OnCreated()。该文件在目录中创建。

唯一的问题是文件为空,文件大小为 0kb。

我想仔细检查我对文件为何为空的想法。是因为文件被第 3 方应用程序删除得太快以至于没有机会进行正确的复制吗? 感谢您观看。

最佳答案

选项 1: 与其查看 FileSystemWatcher,不如查看 Hook 代码以删除事件。 您可以在 Stack Overflow 上查看此评论:https://stackoverflow.com/a/4395147/442470

选项 2: 一旦您的 FileSystemWatcher 意识到文件已创建,就更改文件的权限,使其无法删除。

关于c# - 使用 FileSystemWatcher 监视文件创建并在删除前复制它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940768/

相关文章:

c# - 无法创建搜索响应对象 - 我们如何在 Nest 中模拟搜索响应?

python - 哪个是运行文件系统监控服务的更好方法?

c# - FileSystemWatcher 与轮询以监视文件更改

c# - 如何在 StackLayout 中维护 Xamarin Forms 控件的纵横比

c# - 如何在 .net 核心中使用 Openstreetmap(osm) 离线图 block 文件?

c# - ASP.NET MVC EF 和 MySQL

c# - 如何使用 LINQ to Entities 更新现有对象的属性?

c# - 释放文件锁时收到通知

Powershell IO.FileSystemWatcher 过滤器

filesystems - 如何让 FileSystemWatcher 线程永远运行?