标签: filesystemwatcher

如何按用户名监视文件服务器上的文件访问和更改?

我被要求找到一种方法来监视公司共享文件服务器(简单的Windows共享目录)上特定文件夹中文件的更改(修改,重命名,删除,移动).我在C#中编写了一个简单的应用程序,它使用FileSystemWatcher监视这些更改并通知它们的特定电子邮件地址.

我现在想知道的是如何找出进行这些更改的用户/计算机的名称/ IP.有任何想法吗?

作为编写自己的软件的替代方案,是否有任何支持此功能的好(可能是免费的)软件?

.net c# filesystemwatcher file monitor

5
推荐指数
1
解决办法
1万
查看次数

FileSystemWatcher触发后 - 线程池还是专用线程?

我即将实现原型FileSystemWatcher解决方案.我有一个目录来监控文件创建,以及吸收创建的文件并将其插入数据库的任务.大致这将涉及读取和处理6或7,80个字符文本文件,每隔几秒发生一次150毫秒的爆发,并且很少还需要处理2MB二进制文件.这很可能是一个24/7的过程.

从我读到的有关FileSystemWatcher对象的内容来看,最好将其事件排入一个线程,然后在另一个线程中将它们出列/处理.我现在遇到的困境是进行处理的线程的更好的创建机制.我能看到的选择是:

  1. 每次我收到FSW事件时,我都会手动创建一个新线程(是的,我知道......愚蠢的架构,但我必须说出来).

  2. 每当我收到FSW事件时,都会在CLR线程池中抛出处理

  3. 在启动时,为处理创建专用的第二个线程,并使用生产者/消费者模型来处理工作.主线程将请求排队,第二个线程将其排队并执行工作.

我倾向于将第三种方法作为首选方法,因为我知道工作线程将始终是必需的 - 而且可能更多因为我对线程池没有感觉.

c# multithreading filesystemwatcher threadpool

5
推荐指数
1
解决办法
3054
查看次数

使用.NET框架监视目录中文件更改的可靠方法

我正在寻找一种可靠的方法来查找目录中的更改.

我尝试过使用FileSystemWatcher,但是当创建,更改或删除许多小文件时,它是相当不准确的.它错过了我测试中大约1%或2%的文件.当您快速添加或更改数千个文件时,这是非常重要的.

我已尝试以500毫秒,2000毫秒等不同时间间隔进行轮询更改.在这种情况下,我获得了太多的点击.这可能与FileInfo对象上的时间戳分辨率有关.

所以我的问题是; 是否可以使用.NET Framework可靠地获取对目录的更改?

- 基督徒

.net c# filesystemwatcher polling

5
推荐指数
1
解决办法
2984
查看次数

文件系统事件/ kqueue是否有一个好的objc库包装器来处理递归观察?

我想编写一个OSX(Snow Leopard)应用程序,它可以在特定目录中的文件发生更改时接收通知,并且我希望访问已更改的特定文件的路径.

我知道我可以用做这一点File System Events还是kqueue.前者没有提供更改哪个特定文件的详细信息(要求我构建我正在观看的目录的快照,然后扫描它以找出更改的文件).后者不支持递归观看(要求我以递归方式将监视添加到父目录中的每个文件和目录).

我已经找到了可以为我处理快照/递归乐趣的库,但找不到任何库.UKKQueue对于低级别的kqueue东西看起来像是一个很好的包装器,但似乎没有做递归.同样的GTMFileSystemKQueue.SCEvents看起来像一个很好的包装,File System Events但似乎没有找到更改的特定文件.

是否有一个库可以满足我的要求并且适合这些技术的objc项目?

filesystemwatcher objective-c fsevents kqueue

5
推荐指数
1
解决办法
985
查看次数

FileSystemWatcher类 - 排除目录

我目前正在尝试使用FileSystemWatcher类排除目录,尽管我已经使用过:

FileWatcher.Filter = "C:\\$Recycle.Bin";
Run Code Online (Sandbox Code Playgroud)

FileWatcher.Filter = "$Recycle.Bin";
Run Code Online (Sandbox Code Playgroud)

编译好了,但是当我尝试这个时没有显示结果.

如果我取出过滤器,所有文件加载正常,代码如下:

 static void Main(string[] args)
        {
            string DirPath = "C:\\";

            FileSystemWatcher FileWatcher = new FileSystemWatcher(DirPath);
            FileWatcher.IncludeSubdirectories = true;
            FileWatcher.Filter = "*.exe";
          // FileWatcher.Filter = "C:\\$Recycle.Bin";
          //  FileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed);
            FileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);
          //  FileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);
          //  FileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);
            FileWatcher.EnableRaisingEvents = true;

            Console.ReadKey();
        }
Run Code Online (Sandbox Code Playgroud)

.net c# windows filesystemwatcher

5
推荐指数
1
解决办法
5785
查看次数

FileSystemWatcher无法正常工作

我正在使用FileSystemWatcher扫描从Web应用程序上载文件的文件夹.我有超过1000个文件上传到该文件夹​​.现在,问题是FileSystemWatcher在复制第一个文件时启动,有时,它不适用于所有文件.任何建议都会非常值得一提.

c# asynchronous filesystemwatcher

5
推荐指数
1
解决办法
4716
查看次数

每次我打开Visual Studio时,FileSystemWatcher EnableRaisingEvent都会发生变化

我在Visual Studio 2010中使用C#和框架4.0.

在我的项目中,有两种不同的形式,有两个FileSystemWatchers属性EnableRaisingEvent设置为false.如果我关闭Visual Studio,当我重新打开它时,我会将FileSystemWatcher属性EnableRaisingEvent设置为true.

在设计器文件中的两个表单中都有以下代码:

private void InitializeComponent()
{
     this.components = new System.ComponentModel.Container();
     System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
     this.fileSystemWatcher1 = new System.IO.FileSystemWatcher();
     ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).BeginInit();   
     this.SuspendLayout();

     this.fileSystemWatcher1.Filter = "my_filter";
     this.fileSystemWatcher1.NotifyFilter = System.IO.NotifyFilters.LastWrite;
     this.fileSystemWatcher1.SynchronizingObject = this;
     this.fileSystemWatcher1.Changed += new System.IO.FileSystemEventHandler(this.fileSystemWatcher1_Changed);
}
Run Code Online (Sandbox Code Playgroud)

该属性EnableRaisingEvent未设置,但默认值为false.

知道为什么我会得到这种奇怪的行为吗?

编辑

我按照Virtlink的建议,添加了以下代码:

this.fileSystemWatcher1.EnableRaisingEvents = false;
Run Code Online (Sandbox Code Playgroud)

它似乎解决了我的问题,但几天后(以及一些开放,关闭和重建项目,但没有修改fileSystemWatcher1)我发现:

  • 在设计师,在属性fileSystemWatcher1,EnableRaisingEvents被设置回来true

  • 在代码中,先前添加的行丢失了

我尝试转移到Visual Studio 2012(仍然是框架4.0),并且解决方法将问题解决了几天.然后我得到了与VS10相同的情况.

还有其他想法吗?

c# filesystemwatcher visual-studio-2010 visual-studio-2012

5
推荐指数
1
解决办法
490
查看次数

单声道下的FileSystemWatcher - 观察子目录

我有个问题.我编写了一个包装器FileSystemWatcher来检测文件夹及其所有子文件夹中的更改.没有什么花哨:

FileSystemWatcher watcher = new FileSystemWatcher ();
watcher.Path = this.Root;
watcher.IncludeSubdirectories = true;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.DirectoryName | NotifyFilters.FileName;
watcher.Changed += new FileSystemEventHandler (watcher_Changed);
watcher.Deleted += new FileSystemEventHandler (watcher_Deleted);
watcher.Created += new FileSystemEventHandler (watcher_Created);
watcher.Renamed += new RenamedEventHandler (watcher_Renamed);
watcher.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

在.NET中,在Windows下,它就像一个魅力.但是当我将代码移植到mono并在OSX下运行代码时,它只能在根文件夹中正常工作.

我现在注意到的问题:

  • 在观察者启动时,在根目录下已存在的文件夹内的操作不会引发事件

  • 我通过EventArgs.FullPath属性获得的路径不正确(当我将文件复制到path_to_root/some/more/subdirs/some.file时,我获得的路径只是path_to_root/some.file).

一年前已经报道了unproper路径的问题(看起来已经解决了)但我的单声道来自去年12月(MonoDevelop在参考资料部分说它是版本4.0.0.0,我可以说有关分发)并且bug仍然存在...请参阅:https: //bugzilla.xamarin.com/show_bug.cgi?id = 5747

有任何想法吗?我真的很好奇,如果有一个解决方法,不需要编写自己的观察者,重复轮询文件系统或为目录下的每个文件夹启动单独的观察者...

提前致谢!

c# macos mono filesystemwatcher

5
推荐指数
1
解决办法
5072
查看次数

如何跟踪文件和文件夹的复制/粘贴事件

可以使用跟踪某些事件,例如文件,文件夹的创建,删除或重命名FileSystemWatcher,但是我也需要跟踪复制和粘贴。

我不想跟踪从.text .doc等文件复制的内容,我想跟踪整个文件或文件夹(例如d:\folder\movies复制到)的内容e:\movies。下面的代码示例将能够保留任何文件操作(如重命名,删除,创建,更改)的日志。Iam寻找复制/粘贴并移动文件。

 class Program
{

    static void Main(string[] args)
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();
        ArrayList list = new ArrayList();
        String s;
        foreach (DriveInfo d in allDrives)
        {
            if (DriveType.Fixed == d.DriveType)
            {
                s = Convert.ToString(d);
                list.Add(s);
                Console.WriteLine(s.TrimEnd());
            }
        }
        run(list);
    } 

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]

    public static void run(ArrayList list)
    {
         ArrayList fw = new ArrayList();
         FileSystemWatcher Clientwatcher = new FileSystemWatcher();
        foreach (string s in list)
        {    
            String temp=s;
            temp=temp+'\\';
             Clientwatcher.Path =temp;
             Clientwatcher.Filter …
Run Code Online (Sandbox Code Playgroud)

c# clipboard filesystemwatcher

5
推荐指数
1
解决办法
2451
查看次数

FileSystemWatcher锁定文件夹

答案如下.我既不能删除这个问题,也不能接受我的答案.

我正在FileSystemWatcher听一个文件夹.当我尝试重命名这个文件夹(在Windows资源管理器中)时,我得到一个

无法完成操作,因为文件夹或其中的文件在另一个程序中打开

错误.

评论这些FileSystemWatcher电话可以解决这个问题.

我尝试用一​​个简单的程序重现错误,但没有成功,所以我不确定这里发生了什么.有没有人遇到过这样的事情FileSystemWatcher?如果是这样 - 可能是什么导致了它?

更多信息:

以下似乎足以导致错误:

FileSystemWatcher fsw = new FileSystemWatcher(path);
fsw.Deleted += new FileSystemEventHandler(fsw_Deleted);
fsw.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

可以重命名该文件夹中的文件.和兄弟文件.我甚至试过把一个return;作为第一行fsw_Deleted.仍然没有奏效.由于没有关闭Visual Studio,并删除obj和bin,并再次运行.我甚至尝试不在VS中运行exe文件.仍然 - 没有锁定,如果它没有运行,如果它是锁定.

.net c# filesystemwatcher winforms

5
推荐指数
1
解决办法
1256
查看次数