Есть ли какой-то механизм, с помощью которого я могу быть уведомлен (в C#), когда файл изменен на диске?Уведомление при изменении файла?
ответ
Это будет System.IO.FileSystemWatcher.
Используйте FileSystemWatcher
. Вы можете фильтровать только события модификации.
Вы можете использовать класс FileSystemWatcher
.
public void CreateFileWatcher(string path)
{
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
// Begin watching.
watcher.EnableRaisingEvents = true;
}
// Define the event handlers.
private static 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);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
Спасибо за хороший пример. Я также укажу, что вы можете использовать метод WaitForChanged в FileSystemWatcher, если вы ищете блокирующий (синхронный) способ наблюдения за изменениями. –
Спасибо за этот пример. MSDN имеет почти то же самое [здесь] (http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter%28v=vs.100%29.aspx). Кроме того, некоторые люди могут захотеть просмотреть целые каталоги дерева - для этого используйте 'watcher.IncludeSubdirectories = true; '. – Oliver
- 1. Уведомление об изменении файла Github
- 2. GameKit Уведомление при изменении пользователем
- 3. Отсутствует уведомление при изменении объекта
- 4. iphone 4 - Уведомление об изменении файла/RUNLoop
- 5. HTML5: Уведомление об изменении файла в API?
- 6. checkbox - уведомление об изменении
- 7. Отправить уведомление при изменении свойства Использование KVO
- 8. Уведомление ObservableBuffer слушателей при изменении содержимого участника
- 9. Уведомление об ожидающем потоке при изменении переменной
- 10. Что такое уведомление при изменении количества мониторов?
- 11. Как отменить уведомление при изменении RingerMode
- 12. Как получить уведомление при изменении времени ОС
- 13. Уведомление Android при изменении данных веб-службы
- 14. Как получить уведомление при изменении геометрии объекта?
- 15. Как получить уведомление при изменении свойства массива?
- 16. Уведомление об изменении имущества при изменении объекта недвижимости
- 17. Как изменить уведомление об изменении свойства при изменении подзадачи?
- 18. Уведомление об изменении таблицы
- 19. Уведомление об изменении значения
- 20. Уведомление об изменении контента
- 21. Уведомление об изменении приложения
- 22. Уведомление об изменении отображения
- 23. Уведомление об изменении размера браузера?
- 24. Уведомление Delphi при обновлении файла
- 25. Уведомление Javascript при загрузке файла
- 26. Уведомление об изменении выбора WebView
- 27. UnicodeDecodeError при изменении текстового файла
- 28. Предупреждение при изменении содержимого файла
- 29. Перезагрузка Json-файла при изменении
- 30. Загрузка файла HTML при изменении
3 ответа одновременно. –
См. Этот [ответ] (http://stackoverflow.com/questions/381976/handling-multiple-change-events-in-filesystemwatcher/382996#382996) для получения дополнительной информации о классе FileSystemWatcher и событиях, которые он вызывает. – ChrisF