Могу ли я удалить файл, когда я просматриваю его с помощью FileSystemWatcher?

#c# #filesystemwatcher

#c# #filesystemwatcher

Вопрос:

Мы знаем, что в .NET (если быть точным, C #) мы можем использовать a FileSystemWatcher для обнаружения любого типа изменений.

 public void MessageFileWatcher(string Path, string FileName)
        {
            FileSystemWatcher Watcher = new FileSystemWatcher();
            Watcher.Path = Path;
            Watcher.Filter = FileName;
            Watcher.NotifyFilter = NotifyFilters.LastWrite;
            Watcher.Changed  = new FileSystemEventHandler(OnChanged);
            Watcher.EnableRaisingEvents = true;
        }
  

но я хочу следить за файлом и через некоторое время также хочу удалить этот файл.

Если быть точным. может FileSystemWatcher ли класс всегда искать изменения… и если я захочу удалить этот конкретный файл, вызовет ли это исключение?

Комментарии:

1. Попробуйте и узнайте?

Ответ №1:

Это не вызовет исключения.

A FileSystemWatcher не просматривает файлы: он просматривает файловую систему. В этом случае вы обнаружите, что при удалении файла возникнет по крайней мере событие Deleted.

Ответ №2:

A FileSystemWatcher указывает путь с дополнительным фильтром, а не отдельный файл. Конечно, если вы установите фильтр в качестве имени файла, наблюдатель будет просматривать только один файл, но это скорее побочный эффект, чем его предполагаемое использование.

Тем не менее, ясно, что да, вы можете удалить файл, который просматриваете. Однако удаление не должно вызывать Changed событие. Чтобы отслеживать удаление, вам нужно будет использовать Deleted событие.