如何检测文件何时放入我的文件夹中
问题描述:
在我的软件中我将在我的文件夹之一中接收XML文件和PDF文件,所以我想启动一个事件来读取XML,所以我可以管理这些文件。如何检测文件何时放入我的文件夹中
我该如何检测这个事件,你能否给我推荐一本关于事件或者页面的书,或者给我一个例子。
答
你想使用FileSystemWatcher。
void foo()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\temp";
watcher.Changed += watcher_Changed;
watcher.Created += watcher_Created;
watcher.Filter = "*.pdf";
}
void watcher_Created(object sender, FileSystemEventArgs e)
{
//handle created
}
void watcher_Changed(object sender, FileSystemEventArgs e)
{
//Handle changed
}
答
如前所述
,FileSystemWatcher
是去方式。
但是,请注意,它有一些细微之处:Created
事件在每个文件创建时引发一次,但只要文件首次出现在文件夹中就会引发。如果您有不同的进程复制该文件(可能通过网络连接),但如果您在处理Created
事件时尝试访问该文件,则可能会遇到异常。
另请注意,如果另一个进程正在复制正在监视的文件夹中的文件,Changed
事件很可能会多次提升。使用NotifyFilter
可减少引发的事件数量。
[如何查看文件系统的更改]的可能重复(http://stackoverflow.com/questions/317571/how-to-watch-a-file-system-for-change) – 2011-02-26 00:58:23