【问题标题】:File Filter for FileSystemWatcher()FileSystemWatcher() 的文件过滤器
【发布时间】:2020-07-01 08:11:35
【问题描述】:

我想弄清楚,如何只观看特定的文件方式: 例如

  1. 文件夹将填充名称相同但扩展名不同(.zip、.another)的文件
  2. 该文件将具有特定名称,例如ASK_QUESTION_VERSION_XXXXXXX.zip,其中 XXXXXX 将更改。
  3. 因为文件夹将填充不同的文件,例如DIFFERENT_FILE_XXXXXX.zip,名称相似,我只想查看第一个放置的文件。

如何在此处过滤?下面看一下代码:

 public void watch(List<string> servicesInvolved, int timeout)
    {
        watcher.Path = sourcePath;
        watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName
                               | NotifyFilters.DirectoryName | NotifyFilters.CreationTime;
        watcher.Filter = "*.*";
        // The below did not work, e.g. compilation errors, could not add two filters. 
        //watcher.Filter.Add("*.zip");
        //watcher.Filters.Add("FileName*");

        watcher.Created += (sender, e) => OnChanged(sender, e,  servicesInvolved, timeout);
        watcher.EnableRaisingEvents = true;

    }

【问题讨论】:

  • Filter = "ASK_QUESTION_VERSION_*.zip" ?
  • 此外,显然您可以在代码中进行过滤,在每个文件上触发(或者至少是您可以实际使用的最佳过滤器),然后自己检查文件名。
  • "我只想查看第一个被放置的文件" - 所以如果 ASK_QUESTION_VERSION_1.zip 被放置,你希望得到通知,但如果在那之后 @ 987654324@,您不想收到通知,但您想再次收到ASK_QUESTION_VERSION_2.zip 的通知?所以你的过滤器实际上应该是@Lasse 表示的ASK_QUESTION_VERSION_*.zip?还是您只想收到一个文件的通知?
  • 如果需要通配符无法处理的过滤,可以查看事件处理器内部的路径或属性
  • 在 Windows 文件名通配符中 * 表示任意数量的字符。 ?表示一个字符

标签: c# filter filenames


【解决方案1】:

根据@CodeCaster watcher.Filter = MyFolder*Name*.zip;,这在某种程度上是一个简单的答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多