C#文件系统监视程序只对复制的文件进行计数
我目前正试图在本地文件夹的c#上为创建的新文件保留一个计数器 我有两个子目录的CD和LP,我必须不断检查 文件系统监视程序只跟踪我复制的文件夹。 基本上,我需要跟踪从EM*开始创建的文件夹,但我的代码显示,当我复制和粘贴文件夹时,计数器会增加,而不是在创建EM*文件夹时。 e、 g EM1 EM2仅EM2 copy增加计数器,有时甚至增加+2C#文件系统监视程序只对复制的文件进行计数,c#,linq,filesystemwatcher,C#,Linq,Filesystemwatcher,我目前正试图在本地文件夹的c#上为创建的新文件保留一个计数器 我有两个子目录的CD和LP,我必须不断检查 文件系统监视程序只跟踪我复制的文件夹。 基本上,我需要跟踪从EM*开始创建的文件夹,但我的代码显示,当我复制和粘贴文件夹时,计数器会增加,而不是在创建EM*文件夹时。 e、 g EM1 EM2仅EM2 copy增加计数器,有时甚至增加+2 static int LPcounter { get; set; } static int CDcounter { get
static int LPcounter { get; set; }
static int CDcounter { get; set; }
static int LPCreated;
static int CDCreated;
FileSystemWatcher CDdirWatcher = new FileSystemWatcher();
FileSystemWatcher LPdirWatcher = new FileSystemWatcher();
public Form1()
{
InitializeComponent();
while (true)
watch();
}
public void watch()
{
CDdirWatcher.Path = @"C:\Data\LotData\CD";
CDdirWatcher.Filter = "EM*";
CDdirWatcher.NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.LastWrite;
CDdirWatcher.EnableRaisingEvents = true;
CDdirWatcher.Created += CDdirWatcher_Created;
LPdirWatcher.Path = @"C:\Data\LotData\LP";
LPdirWatcher.Filter = "EM*";
LPdirWatcher.NotifyFilter = NotifyFilters.DirectoryName;
LPdirWatcher.EnableRaisingEvents = true;
LPdirWatcher.Created += LPdirWatcher_Created;
}
private static void CDdirWatcher_Created(object sender, FileSystemEventArgs e)
{
CDCreated += 1;
}
private static void LPdirWatcher_Created(object sender, FileSystemEventArgs e)
{
LPCreated += 1;
}
您的代码是正确的,请尝试使用console和MKDIR创建目录,它将正常工作。如果从资源管理器创建目录,则首先将其创建为“新文件夹”,然后重命名 从Microsoft web:复制和粘贴被解释为重命名 操作系统和FileSystemWatcher对象解释 剪切粘贴操作或移动操作作为文件夹的重命名操作 及其内容 从同一文档中,事件可以引发多次: 常见文件系统操作可能引发多个事件。对于 例如,当文件从一个目录移动到另一个目录时,几个 可能引发OnChanged和一些OnCreated和OnDeleted事件
你的要求不清楚。如果我的要求不清楚,我很抱歉,哪一部分比较混乱?对不起,我还是第一次在堆栈上发布。我编辑我的帖子是为了更清楚我所理解的是,您想为所有以
EM
开头的名称添加一个watch,并且watcher在EM2 copy
方面也做得很好,因为它也以EM
开头,那么这里有什么问题吗?出于某种原因,CDCreated没有计算任何创建的名称,例如EM1,EM2但当我在调试时复制并粘贴旧文件时,计数器会出问题,但为什么要在Infinite循环中调用watch()?你只需要调用它一次就可以设置观察器,然后你就会收到来自这些观察器的事件,我想知道这是问题的一部分吗?我已经有一段时间没有做任何表单开发了,但这看起来不太对劲…如何创建正确的筛选器,以便在创建新文件夹且未修改时正确触发count事件?向上投票:)和@jonathan james:您还可以看到针对可能导致+2的事件触发两次的文件系统事件的答案。