【问题标题】:How to check whether file was modified by third party application? I'm looking for tiny code example如何检查文件是否被第三方应用程序修改?我正在寻找微小的代码示例
【发布时间】:2019-06-23 16:08:38
【问题描述】:

使用 C# 我可以检查文件是否被某个程序修改过 DateTime dt = File.GetLastWriteTime(filename);我最初只是存储这个时间,并每隔几秒钟将它与timer.Elapsed += OnTimedEvent;进行比较

我想知道是否有其他解决方案?某种事件处理程序,是否可以“监听”指定文件并在 c# 中相应地运行一些代码?

【问题讨论】:

  • 请在FileSystemWatcher 抽奖看看是否对你有帮助。
  • 是的!它非常适合我的小任务。谢谢!

标签: c# .net windows file


【解决方案1】:

下面的代码仅处理指定文件夹中 txt 文件的更改,但这就是我所需要的。使用 csc.exe 编译,此代码有效。谢谢大家给我提示!

using System;
using System.IO;
using System.Security.Permissions;

public class Watcher
{
    public static void Main()
    {
    Run();
    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"C:\somePath"; // set correct path
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Filter = "*.txt";  // watch for txt only
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.EnableRaisingEvents = true;
        while(Console.ReadLine()==null); // wait for keypress
    }
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }
}

【讨论】:

    【解决方案2】:

    您可以使用 File​System​Watcher 定义文件更改事件。​从 System.IO 更改以触发任何修改代码,因此您不必轮询它。

    【讨论】:

      【解决方案3】:

      FileSystemWatcher 可以在检测到文件系统更改时引发事件。

      在您的情况下,听起来您想订阅Changed 事件,其中NotifyFilterLastWrite

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 1970-01-01
        • 1970-01-01
        • 2017-10-09
        相关资源
        最近更新 更多