I'm试图检测FileSystemWatcher Create事件中的临时.tmp文件

黑色

成员
已加入
2015年10月24日
留言内容
5
编程经验
1-3
你好

我正在尝试检测在FileSystemWatcher创建事件中创建的隐藏(尽管在Windows文件资源管理器中有一秒钟的发现).tmp文件。 .tmp文件显示在与创建的文件相同的目录中。我在这里使用FileSystemWatcher的示例:

//msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

在Create事件中,我找到了自动生成的隐藏.tmp文件,将我的e.changeType更改为"Deleted"一秒钟后将其删除。因此,我试图检测它并阻止它影响其余的代码块。我尝试了在网上找到的此代码示例。

FileAttributes属性= System.IO.File.GetAttributes(e.FullPath);

FileInfo fi = new FileInfo(e.FullPath);     

if ((attr & FileAttributes.Hidden) == FileAttributes.Hidden || fi.Extension == ".tmp")
{
     MessageBox.Show(".tmp file found");
}


但是第一行给我一个错误,因为隐藏的.tmp文件不是e.FullPath的一部分。如何更改此设置以检测隐藏的.tmp文件?

谢谢。
 
Last edited:

狂暴风暴

知名会员
已加入
2014年8月6日
留言内容
85
地点
南非鲁德普特
编程经验
10+
我不确定这是否对您有帮助,但是您可以为不同的事件类型定义单独的处理程序

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnCreated);
        watcher.Deleted += new FileSystemEventHandler(OnDeleted);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);


并添加处理程序

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

private static void OnCreated(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

private static void OnDeleted( object source, FileSystemEventArgs e)
    {
// Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

private static void OnRenamed( object source, RenamedEventArgs e)
    {
// Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }


注意 FileAttributes属性= System.IO.File.GetAttributes(e.FullPath); 如果该文件被删除并且因此不再存在,将仍然引发错误;没有办法解决。
 
Last edited:

黑色

成员
已加入
2015年10月24日
留言内容
5
编程经验
1-3
我不确定这是否对您有帮助,但是您可以为不同的事件类型定义单独的处理程序

我已经按照我在原始帖子中链接的示例进行了此操作。

Note that FileAttributes属性= System.IO.File.GetAttributes(e.FullPath); 如果该文件被删除并且因此不再存在,将仍然引发错误;没有办法解决。

.tmp文件删除之前,没有办法捕获它吗?有什么方法可以检测到它导致Deleted事件的吗?

谢谢。
 
最佳 底部