【发布时间】:2020-07-01 08:11:35
【问题描述】:
我想弄清楚,如何只观看特定的文件方式: 例如
- 文件夹将填充名称相同但扩展名不同(.zip、.another)的文件
- 该文件将具有特定名称,例如ASK_QUESTION_VERSION_XXXXXXX.zip,其中 XXXXXX 将更改。
- 因为文件夹将填充不同的文件,例如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 文件名通配符中 * 表示任意数量的字符。 ?表示一个字符