侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。
微软文档:点击直达
简单使用
private void WatchDir(string path)
{
var watcher = new FileSystemWatcher(path);
watcher.EnableRaisingEvents = true;
watcher.IncludeSubdirectories = true;
watcher.Created += FileWatcher_Created;
}
private void FileWatcher_Created(object sender, FileSystemEventArgs e)
{
if (e.Name.ToLower().EndsWith(".lrc")) return;
//因为文件的创建事件触发时,文件可能还未完成创建,比如复制一个文件场景,这个时候文件处于被其他进程占用状态。所以需要等文件完全创建结束之后再操作。
while (true)
{
FileStream stream = null;
try
{
stream = new FileStream(e.FullPath, FileMode.Open);
break;
}
catch
{
Task.Delay(1000).Wait();
}
finally
{
stream?.Close();
stream?.Dispose();
}
}
//todo something
}