Tag: filesystemwatcher

FileSystemWatcher没有触发事件

出于某种原因,我的FileSystemWatcher没有触发任何事件。 我想知道在我的目录中创建,删除或重命名新文件的任何时间。 _myFolderPath设置正确,我已经检查过了。 这是我目前的代码: public void Setup() { var fileSystemWatcher = new FileSystemWatcher(_myFolderPath); fileSystemWatcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; fileSystemWatcher.Changed += FileSystemWatcherChanged; fileSystemWatcher.Created += FileSystemWatcherChanged; fileSystemWatcher.Deleted += FileSystemWatcherChanged; fileSystemWatcher.Renamed += FileSystemWatcherChanged; fileSystemWatcher.Filter = “*.*”; fileSystemWatcher.EnableRaisingEvents = true; } private void FileSystemWatcherChanged(object sender, FileSystemEventArgs e) { MessageBox.Show(“Queue changed”); listBoxQueuedForms.Items.Clear(); foreach (var fileInfo in […]

FileStream和C#中的FileSystemWatcher,奇怪的问题“进程无法访问文件”

我有这个复杂的代码库,它正在侦听某个文件夹上的FileCreated事件。 当文件被创建(其中还包括将文件移动到该文件夹​​)时,我想读取该文件并对其执行某些操作。 它适用于第一个文件,但在所有其他尝试之后抛出exception。 在调试模式下(使用VisualStudio),将抛出错误,但如果我只是单击“继续”…它将工作(没有错误)。 我发布了简化代码,它演示了这个问题。 例如,启动应用程序,单击“开始”按钮,然后“创建新文本文件” 输出是: Working 如果您以完全相同的方式创建2ed文件,则输出为: Broken: The process cannot access the file ‘C:\TestFolder\New Text Document (2).txt’ because it is being used by another process. Working, after breaking 在查看我的代码之后,您将看到上面的打印输出意味着首先抛出了“无法访问文件”exception,但是在catch语句中执行相同的调用突然起作用。 这对我来说没有任何意义,因为该文件显然没有被其他任何东西使用(我刚刚创建它)..并且无论如何它会在一秒后工作…. 以下是我的代码 XAML: 代码背后: using System; using System.Diagnostics; using System.IO; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace WpfApplication1 { public partial […]

如何使用C#监控进程的IO活动?

使用FileSystemWatcher,我们可以监视特定文件系统的IO活动,但无论如何要知道哪个正在运行的进程导致该IO? 更具体地说,假设一个正在运行的进程即。 abc.exe正在驱动器D上创建一个文件text.txt。我们可以使用FileSystemWatcher监视已在驱动器D中创建了一个名为text.txt的文件,但我们是否可以通过编程方式确定名为abc.exe的进程正在创建该特定文件在驱动器D?

FileSystemWatcher文件位于子目录中

我正在尝试通知如果创建,复制或移动到我正在观看的目录中的文件。 我只希望收到有关文件的通知,而不是目录。 这是我目前的一些代码: _watcher.NotifyFilter = NotifyFilters.FileName; _watcher.Created += new FileSystemEventHandler(file_created); _watcher.Changed += new FileSystemEventHandler(file_created); _watcher.Renamed += new RenamedEventHandler(file_created); _watcher.IncludeSubdirectories = true; _watcher.EnableRaisingEvents = true; 问题是,如果我移动一个包含文件的目录,我就不会收到该文件的任何事件。 如何通知我所有添加的文件(无论如何)到监视目录或它的子目录? Incase我没有解释得足够好……我有WatchedDirectory和Directory1 。 Directory1包含Hello.txt 。 如果我将Directory1移动到WatchedDirectory ,我希望收到Hello.txt的通知。 编辑:我应该注意我的操作系统是Windows 8.我确实收到了复制/粘贴事件的通知,但没有移动事件(拖放到文件夹中)。

我需要使用哪个FileSystemWatcherfilter来查找新文件

到目前为止,我知道FileSystemWatcher可以查看一个文件夹,如果该文件夹中的任何文件被更改,修改,.etc …然后我们就可以处理它。 但我不确定在我的场景中应该使用哪个filter和事件:监视文件夹,如果文件被添加到该文件夹​​,请执行XYZ …所以在我的场景中我不关心现有文件是否已更改等等。应该忽略这些…当且仅当新文件已添加到该文件夹​​时才执行XYZ … 您为此方案推荐了哪个事件和filter?

配置filesystemwatcher,使其仅在文件完全复制时才引发创建的事件

当有一个大文件移入监视文件夹时,它甚至在文件完全复制之前就会引发created事件。 在创建的事件中复制此类文件会导致“另一个进程正在使用该文件”错误。 我使用了一个尝试复制文件的线程,直到允许这样做。但我仍然不满意。 我们是否可以配置FileSystemWatcher ,以便在文件完全复制后才会引发创建的事件?谢谢。

查找修改共享驱动器文件夹文件的用户

我有一个共享驱动器,它位于服务器的其他位置。 我想收到一条通知,告诉我修改共享驱动器中存在的任何文件的人的用户名。 目前我正在使用FileSystemWatcher获取通知和Stack溢出问题提供的代码“ 在C#中找出用户名(谁)修改过的文件 ”来查找用户名。 但相反,我得到了共享驱动器目前所在的计算机的名称。 我想要在共享驱动器上修改 文件的用户名 。 我的代码是: private string GetSpecificFileProperties(string file, params int[] indexes) { string fileName = Path.GetFileName(file); string folderName = Path.GetDirectoryName(file); Shell32.Shell shell = new Shell32.Shell(); Shell32.Folder objFolder; objFolder = shell.NameSpace(folderName); StringBuilder sb = new StringBuilder(); foreach (Shell32.FolderItem2 item in objFolder.Items()) { if (fileName == item.Name) { for (int i […]

FileSystemWatcher触发文件流打开

我有一个filesystemwatcher,它会在修改文件时触发事件。 一旦锁定被删除,我想从该文件中读取。 目前,我只是在触发事件时尝试打开文件,当复制大文件时,文件锁在事件发送后保持一段时间,从而阻止文件被打开以进行读取访问。 有什么建议?

将FileSystemWatcher与Windows服务一起使用

我有一个Windows服务,需要监视目录中的文件,然后将其移动到另一个目录。 我正在使用FileSystemWatcher来实现这一点。 这是我的主要服务类。 public partial class SqlProcessService : ServiceBase { public SqlProcessService() { InitializeComponent(); } protected override void OnStart(string[] args) { FileProcesser fp = new FileProcesser(ConfigurationManager.AppSettings[“FromPath”]); fp.Watch(); } protected override void OnStop() { } } 这是我的FileProcessor类 public class FileProcesser { FileSystemWatcher watcher; string directoryToWatch; public FileProcesser(string path) { this.watcher = new FileSystemWatcher(); this.directoryToWatch = path; […]

FileSystemWatcher网络断开连接

我有一个FileSystemWatcher监视网络共享上的文件。 如果发生事件以使共享不可用,可能是由于网络问题,FileSystemWatcher将断开连接。 显然我可以处理“错误”事件,也许做一些日志记录,很多文章建议在错误事件处理程序中重新连接FSW。 但是,如果网络共享在错误事件中仍然不可用,该怎么办? 然后我需要引入一个计时器来测试网络共享是否可用并尝试重新连接FSW。 1)有更好的方法吗? 2)是否有一个属性允许我确定FSW已与文件断开连接? 我注意到FSW中有一个非公共成员“stopListening”,当FSW断开连接时,它似乎设置为true。 但这并未公开曝光 任何帮助,将不胜感激 … 谢谢凯文