ファイルまたはディレクトリが削除されたかどうかを FSW で判断する方法はありますか?
16465 次
4 に答える
43
fletcherのソリューションの簡略化および修正されたバージョンは次のとおりです。
namespace Watcher
{
class Program
{
private const string Directory = @"C:\Temp";
private static FileSystemWatcher _fileWatcher;
private static FileSystemWatcher _dirWatcher;
static void Main(string[] args)
{
_fileWatcher = new FileSystemWatcher(Directory);
_fileWatcher.IncludeSubdirectories = true;
_fileWatcher.NotifyFilter = NotifyFilters.FileName;
_fileWatcher.EnableRaisingEvents = true;
_fileWatcher.Deleted += WatcherActivity;
_dirWatcher = new FileSystemWatcher(Directory);
_dirWatcher.IncludeSubdirectories = true;
_dirWatcher.NotifyFilter = NotifyFilters.DirectoryName;
_dirWatcher.EnableRaisingEvents = true;
_dirWatcher.Deleted += WatcherActivity;
Console.ReadLine();
}
static void WatcherActivity(object sender, FileSystemEventArgs e)
{
if(sender == _dirWatcher)
{
Console.WriteLine("Directory:{0}",e.FullPath);
}
else
{
Console.WriteLine("File:{0}",e.FullPath);
}
}
}
}
于 2010-07-26T18:15:08.273 に答える
1
最初は「パス」機能を一時的に使用しますが、後で削除しない場合は、Directory.Exists で修正します。ただし、削除のケースは修正されません
bool isDirectory = Path.GetExtension(e.FullPath) == string.Empty;
if (e.ChangeType != WatcherChangeTypes.Deleted)
{
isDirectory = Directory.Exists(e.FullPath);
}
于 2014-03-26T02:53:12.533 に答える
-1
FileSystemEventArgs.FullPath
プロパティを調べて、それがディレクトリかファイルかを判断できます。
if (Path.GetFileName(e.FullPath) == String.Empty)
{
//it's a directory.
}
ファイルかディレクトリかを確認します。
于 2010-07-26T16:09:10.527 に答える