C#文件系统监视程序仅保留已复制文件的数量

我目前正在尝试在本地文件夹的c#上保留一个计数器,以用于创建的新文件。

我有两个必须继续检查的CD和LP子目录。

文件系统监视程序仅跟踪我复制的文件夹。 基本上,我需要跟踪以EM *开头的文件夹,但是我的代码显示,当我复制和粘贴文件夹时(而不是在创建EM *文件夹时)计数器增加。 例如仅EM1 EM2 EM2复制会增加计数器,有时甚至会增加+2

        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;
        }
siqi111 回答:C#文件系统监视程序仅保留已复制文件的数量

您的代码正确,请尝试使用控制台和MKDIR创建目录,它将起作用。如果从资源管理器创建目录,则首先将其创建为“新文件夹”,然后重命名。

在Microsoft网站上:复制和粘贴被解释为重命名 https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher.notifyfilter?view=netframework-4.8

  

操作系统和FileSystemWatcher对象解释一个   剪切和粘贴动作或移动动作作为文件夹的重命名动作   及其内容

在同一文档中,事件可以引发多次:

  

常见文件系统操作可能引发多个事件。对于   例如,当文件从一个目录移动到另一个目录时,   可能会引发OnChanged以及一些OnCreated和OnDeleted事件。

本文链接:https://www.f2er.com/3168537.html

大家都在问