到目前为止,我知道FileSystemWatcher的可以看看到一个文件夹,如果任何一个文件夹中的文件被更改,修改,.etc ......然后我们就可以处理它。 但我不知道该过滤器和事件,我应该在我的情况下使用:手表一个文件夹,如果一个文件被添加到该文件夹,做XYZ ......所以我的方案,我不关心,如果现有的文件被更改,etc..those应该被忽略......只做XYZ当且仅当一个新的文件已经被添加到该文件夹...
你的这种情况建议哪些事件和过滤器?
到目前为止,我知道FileSystemWatcher的可以看看到一个文件夹,如果任何一个文件夹中的文件被更改,修改,.etc ......然后我们就可以处理它。 但我不知道该过滤器和事件,我应该在我的情况下使用:手表一个文件夹,如果一个文件被添加到该文件夹,做XYZ ......所以我的方案,我不关心,如果现有的文件被更改,etc..those应该被忽略......只做XYZ当且仅当一个新的文件已经被添加到该文件夹...
你的这种情况建议哪些事件和过滤器?
设置观察者:
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "Blah";
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName;
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
然后实现FileCreated
代表:
private void OnChanged(object source, FileSystemEventArgs e) {
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
请看看这里的FileSystemWatcher对象的详细解释: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx
你将不得不寻找创建的文件,如果你想寻找添加的文件。
您可以指定更改的类型通过设置WatcherChangeType枚举值来监视。 可能的值包括如下:
此外,你可能只是线了事件处理程序,如果一个文件被创建(添加),并没有实现所有的其他事件,因为它们不适合你有趣的是触发:
watcher.Created += new FileSystemEventHandler(OnChanged);
有评论下面的代码可能有希望满足你的需要。
public void CallingMethod() {
using(FileSystemWatcher watcher = new FileSystemWatcher()) {
//It may be application folder or fully qualified folder location
watcher.Path = "Folder_Name";
// Watch for changes in LastAccess and LastWrite times, and
// the renaming of files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
// Only watch text files.if you want to track other types then mentioned here
watcher.Filter = "*.txt";
// Add event handlers.for monitoring newly added files
watcher.Created += OnChanged;
// Begin watching.
watcher.EnableRaisingEvents = true;
}
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e) {
// Specify what is done when a file is created with these properties below
// e.FullPath , e.ChangeType
}