Обнаружение перемещенных файлов с помощью FileSystemWatcher

Я понимаю, что FileSystemWatcher не предоставляет событие Move, вместо этого он генерирует отдельные события Delete и Create для одного и того же файла. (FilesystemWatcher следит за исходной и целевой папками).

Однако как мы можем различить истинное перемещение файла и случайное создание файла, имя которого совпадает с именем файла, который был недавно удален?

Некоторое свойство класса FileSystemEventArgs, например "AssociatedDeleteFile» ему присваивается путь к удаленному файлу, если он является результатом перемещения, или NULL в противном случае, было бы здорово. Но, конечно, это нене существует.

Я также понимаю, что FileSystemWatcher работает на базовом уровне файловой системы, и поэтому концепция "Переехать" может иметь смысл только для приложений более высокого уровня. Но если это так, то какой алгоритм люди порекомендуют для решения этой ситуации в моем приложении?

Обновление на основе обратной связи:

Класс FileSystemWatcher, по-видимому, видит перемещение файла как просто два разных события: удаление исходного файла, за которым следует создание в новом месте.

К сожалению, нет "ссылка на сайт" между этими событиями, поэтому не очевидно, как отличить перемещение файла от обычного удаления или создания. На уровне ОС перемещение обрабатывается специально, вы можете перемещать, например, файл размером 1 ГБ практически мгновенно.

В паре ответов предлагалось использовать хеш-код для файлов, чтобы надежно идентифицировать их между событиями, и я, вероятно, воспользуюсь этим подходом. Но если кто-нибудь знает, как проще определить ход, пожалуйста, оставьте ответ.

Ответы на вопрос(5)

Ваш ответ на вопрос