C# 如何检查文件是否被第三方应用程序修改?I';我在寻找小代码示例
使用C#我可以检查文件是否被某个程序使用某种C# 如何检查文件是否被第三方应用程序修改?I';我在寻找小代码示例,c#,.net,windows,file,C#,.net,Windows,File,使用C#我可以检查文件是否被某个程序使用某种 DateTime dt=File.GetLastWriteTime(文件名)我只是先存储这个时间,然后每隔几秒钟与timer.appeased+=OnTimedEvent比较一次 我想知道是否还有其他解决方案?某种类型的事件处理程序,是否可以“侦听”指定的文件并相应地在c#中运行某些代码?在检测到文件系统的更改时会引发事件 在您的情况下,听起来好像您想要订阅更改的事件,使用LastWrite的NotifyFilter,您可以使用File来定义文件更改
DateTime dt=File.GetLastWriteTime(文件名)代码>我只是先存储这个时间,然后每隔几秒钟与timer.appeased+=OnTimedEvent比较一次代码>
我想知道是否还有其他解决方案?某种类型的事件处理程序,是否可以“侦听”指定的文件并相应地在c#中运行某些代码?在检测到文件系统的更改时会引发事件
在您的情况下,听起来好像您想要订阅更改的事件,使用LastWrite的NotifyFilter
,您可以使用File来定义文件更改事件系统观察者。从System.IO更改为在修改时触发任何代码,因此您不必轮询它。下面的代码只处理指定文件夹中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);
}
}
请拿一个战利品,看看这是否对你有帮助。是的!它对我的小任务非常有效。谢谢