Tag: filesystemwatcher

FileSystemWatcher – 目标目录所需的最小权限?

使用.NET FileSystemWatcher http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx监视一个充满文件的目录:Changed; 创建; 删除; 重命名事件。 运行FileSystemWatcher的帐户对其正在观看的目录所需的权限最小的是什么? 它似乎是READ,但我无法在任何地方找到记录。 谢谢

C#:如何检查打开的文件是否已更新

例如,您知道该function,如果您在另一个编辑器中也有相同的文件,则打开C:\test.txt ,并在那里编辑它,当您返回时,应用程序将提示文件已更改,无论您是否要更新它。 如何检查文件是否已更新? UPDATE 问一个姐妹问题“ 使用FileSystemWatcher来监视文件的变化 ”

使用FileSystemWatcher查看log4net日志文件

我已经创建了简单的WPF控件来监视日志文件中的更改。 我使用FileSystemWatcher来观看特定文件。 我的配置: Directory = System.IO.Path.GetDirectoryName(logFileFullPath); Filter = System.IO.Path.GetFileName(logFileFullPath); NotifyFilter = (NotifyFilters.LastWrite | NotifyFilters.Size); EnableRaisingEvents = true; 问题是只有在手动刷新目录或打开日志文件后才会显示更改。 我在我的log4net配置中使用RollingFileAppender,因此应立即写入更改。 问题是:为什么它不起作用以及如何使其工作? 编辑: 此外,当我手动更新其他受监控文件时,观察者工作正常。 所以它必须是一些log4net问题。

如何确定文件夹是否已完成复制c#

我有一个问题:如何确定文件夹是否已从一个位置复制到另一个位置? 目前,我的FileSystemWatcher会在复制目录中的文件后立即触发多个事件。 我想要的是,当成功复制该文件夹中的所有文件时,将触发一个单一事件。 我的代码现在看起来像这样: static void Main(string[] args) { String path = @”D:\Music”; FileSystemWatcher mWatcher = new FileSystemWatcher(); mWatcher.Path = path; mWatcher.NotifyFilter = NotifyFilters.LastAccess; mWatcher.NotifyFilter = mWatcher.NotifyFilter | NotifyFilters.LastWrite; mWatcher.NotifyFilter = mWatcher.NotifyFilter | NotifyFilters.DirectoryName; mWatcher.IncludeSubdirectories = true; mWatcher.Created += new FileSystemEventHandler(mLastChange); mWatcher.Changed += new FileSystemEventHandler(mLastChange); mWatcher.EnableRaisingEvents = true; Console.WriteLine(“Watching path: ” + path); String exit; […]

FileSystemWatcher – 第二次不触发事件

我有一个应用程序启动其他应用程序,然后等待它们创建一个特定的数据文件(它一次监视一个应用程序)。 每次启动应用程序时,它都会监视要创建的特定文件的特定目录。 我正在使用FileSystemWatcher执行此操作(将其设置为目录,然后筛选正确的文件名)。 这是第一次(总是)很好用,但是第二次启动的应用程序永远不会触发事件。 它似乎触发事件的唯一方法是,如果我在事件处理程序中放置一个断点,或者如果我在事件处理程序中有一个Thread.Sleep命令。 这对我来说似乎很奇怪……是否有一些我不知道的种族情况? 这是代码。 注意我有一个Thread.Sleep(500)。 有了这一行,代码每次都有效。 没有它会失败。 我真的不习惯依赖睡眠命令。 我不确定什么条件会导致不能正常工作。 public static void watchFiles(string path) { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = path; watcher.Created += new FileSystemEventHandler(watcher_Handler); watcher.EnableRaisingEvents = true; } public static void watcher_Handler(object sender, FileSystemEventArgs e) { //Hack – the sleep allows the second and third application to be caught […]

不使用FilesystemWatcher的文件夹侦听器

我需要在C#中创建一个监听器来监视共享文件夹(UNC路径),并在到达时将具有特定扩展名(* .json)的文件复制到目标文件夹。 文件可以延迟大约半分钟。 该文件夹永远不会为空。 问题: 文件将到达新的子文件夹,FileSystemWatcher无法使用,因为它无法侦听共享文件夹中的子文件夹。 这些文件需要复制并保留在文件夹中,因此我们需要确保不会多次复制同一文件。 编辑/更新的文件需要再次复制并覆盖在目标文件夹中。 其他文件将在文件夹中,新文件将到达我们需要忽略的(没有正确的扩展名)。 我考虑过轮询文件夹,但我没有想出一个好的实现。 我很确定我不能使用FilesystemWatcher对象,但也许有人可以找到使用它的智能解决方案。

NServicebus与文件系统观察器

我希望我的端点在检测到特定文件夹中的文件被删除时发送一个事件。 我能够通过使用实现IWantToRunWhenBusStartsAndStops的类来实现它,后者又设置了一个FileSystemWatcher来监视给定的文件夹。 我的问题是,这是使用nservicebus进行此操作的最佳方式,还是我错过了可能导致我遇到麻烦的问题? 这是我的代码: public class FileSystem : IWantToRunWhenBusStartsAndStops { private FileSystemWatcher watcher; public void Start() { ConfigFileWatcher(); } public void Stop() { } [PermissionSet(SecurityAction.Demand, Name = “FullTrust”)] private void ConfigFileWatcher() { watcher = new FileSystemWatcher(); watcher.Path = @”c:\”; /* Watch for changes in LastAccess and LastWrite times, and the renaming of files or directories. […]

C#FileSystemWatcher WaitForChanged方法仅检测一个文件更改

我遇到了类似这样的问题: FileSystemWatcher – 只有一次触发更改事件? 但由于该线程已有两年,我的代码有点不同,我决定开一个新问题。 好吧,这是我的代码: while (true) { FileSystemWatcher fw = new FileSystemWatcher(); fw.Path = @”Z:\”; fw.Filter = “*.ini”; fw.WaitForChanged(WatcherChangeTypes.All); Console.WriteLine(“File changed, starting script…”); //if cleanup try { if (File.ReadAllLines(@”Z:\file.ini”)[2] == “cleanup”) { Console.WriteLine(“Cleaning up…”); Process c = new Process(); c.StartInfo.FileName = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop).Trim(‘\\’) + @”\clean.exe”; c.StartInfo.WorkingDirectory = System.Environment.SpecialFolder.DesktopDirectory.ToString(); c.Start(); c.WaitForExit(); Console.WriteLine(“Done with cleaning up, […]

FileSystemWatcher监视移动的文件

可能重复: 使用FileSystemWatcher检测移动的文件 我正在尝试使用FileSystemWatcher监视移动的文件,并在此处获得了一些帮助: 将FileSystemWatcher与多个文件一起使用 但是,我发现我必须能够使用Deleted和Created事件来获取文件移动的路径以及移动文件的路径。 但是当我为Delete事件添加类似的代码时,我只能触发一个或另一个事件。 它似乎是我连接决定哪个事件将运行的事件的顺序。 因此,如果我将Created事件放在接线代码的最后,那将会运行,反之亦然,如果我将删除接线放在最后,那将运行,但不会创建。 这是代码: public class FileListEventArgs : EventArgs { public List FileList { get; set; } } public class Monitor { private List filePaths; private List deletedFilePaths; private ReaderWriterLockSlim rwlock; private Timer processTimer; private Timer deletionTimer; public event EventHandler FileListCreated; public event EventHandler FileListDeleted; public void OnFileListCreated(FileListEventArgs e) { […]

FileSystemWatcher IncludeSubdirectories不在网络共享上工作

我正在尝试查看文件夹的网络共享,其中文件已添加到共享以指示上载已完成。 我想使用FileSystemWatcher来监视该触发器文件的该共享及其子目录,如下所示。 FileSystemWatcher fsw = new FileSystemWatcher(share, triggerFilePattern); fsw.IncludeSubdirectories = true; fsw.Created += new FileSystemEventHandler(OnCreated); fsw.Renamed += new RenamedEventHandler(OnRenamed); fsw.Error += new ErrorEventHandler(OnError); 如果在共享的根目录中创建了文件,则会触发该事件。 如果在共享的子目录中创建了一个文件,则该事件不会触发,也不会出现错误。 如果我为该子目录创建一个新的FileSystemWatcher,那么当我在那里创建一个文件时,我会收到一个事件。 但是,与顶级FileSystemWatcher类似,我不会获取在任何其他子目录中创建的文件的事件。 如果我将网络共享更改为本地目录进行测试,它会按预期工作。 有任何想法吗? 我可以设置一些阻止递归FileSystemWatcher检查的不稳定的网络共享设置吗? 我可以解决这个问题,但不必使代码复杂化会很好。 编辑:我看到我在Properties-> Security选项卡下没有完全控制,所以我认为可能就是这样。 但是我能够在具有相同可见权限的不同共享上获得正常的期望行为,所以我又回到不知道为什么这个特定的共享不起作用。 编辑2:在同事的建议下,我也添加了一个Changed处理程序。 如果没有首先创建文件就可以更改文件是没有意义的,但是…当在子目录中创建文件时,我在相关共享上获得Changed事件。 (重命名时我仍然没有得到任何结果。)这解决了我当前的问题,但是我会打开这个问题以防万一有人能够回答为什么会发生这种情况。