.net FileSystemWatcher 不拾取移动的文件夹
.net FileSystemWatcher does not pick up moved folders
我发现很多关于移动的 文件 的讨论(我没有遇到任何问题),但没有任何特定于移动的 文件夹 (因此 post)。
我有一个 FileSystemWatcher
实例化如下:
var fileWatcher = new FileSystemWatcher("C:\mypath");
fileWatcher.IncludeSubdirectories = true;
fileWatcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.CreationTime
| NotifyFilters.Size;
fileWatcher.Changed += OnChanged;
fileWatcher.Created += OnChanged;
fileWatcher.Deleted += OnDeleted;
fileWatcher.Renamed += OnRenamed;
fileWatcher.Error += WatcherOnError;
fileWatcher.EnableRaisingEvents = true;
无论我对文件做什么,我都会按预期引发事件,但是如果我 将文件夹(即使其中有文件)拖动(移动)到watched 文件夹,none 个事件被引发。
我 运行 在 Windows 10(不确定其他版本的 win 是否以相同方式运行)。
有谁知道如何获得文件夹移动的通知?
奇怪,这对我有用:
void Main()
{
FileSystemWatcher fsw = new FileSystemWatcher(@"c:\Temp\");
fsw.IncludeSubdirectories = true;
fsw.Changed += new FileSystemEventHandler(OnChanged);
fsw.EnableRaisingEvents = true;
while (true) { }
}
void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
您通过在 NotifyFilter
.
中不包含 NotifyFilters.DirectoryName
来明确排除目录更改
这里有一个 link 文档,但它只是暗示正确:-) 我通过使用你的代码而不使用然后使用额外的标志来确认它。
我发现很多关于移动的 文件 的讨论(我没有遇到任何问题),但没有任何特定于移动的 文件夹 (因此 post)。
我有一个 FileSystemWatcher
实例化如下:
var fileWatcher = new FileSystemWatcher("C:\mypath");
fileWatcher.IncludeSubdirectories = true;
fileWatcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.CreationTime
| NotifyFilters.Size;
fileWatcher.Changed += OnChanged;
fileWatcher.Created += OnChanged;
fileWatcher.Deleted += OnDeleted;
fileWatcher.Renamed += OnRenamed;
fileWatcher.Error += WatcherOnError;
fileWatcher.EnableRaisingEvents = true;
无论我对文件做什么,我都会按预期引发事件,但是如果我 将文件夹(即使其中有文件)拖动(移动)到watched 文件夹,none 个事件被引发。
我 运行 在 Windows 10(不确定其他版本的 win 是否以相同方式运行)。
有谁知道如何获得文件夹移动的通知?
奇怪,这对我有用:
void Main()
{
FileSystemWatcher fsw = new FileSystemWatcher(@"c:\Temp\");
fsw.IncludeSubdirectories = true;
fsw.Changed += new FileSystemEventHandler(OnChanged);
fsw.EnableRaisingEvents = true;
while (true) { }
}
void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
您通过在 NotifyFilter
.
NotifyFilters.DirectoryName
来明确排除目录更改
这里有一个 link 文档,但它只是暗示正确:-) 我通过使用你的代码而不使用然后使用额外的标志来确认它。