Обнаружение перемещенного использования файлов FileSystemWatcher

Существует некоторое перекрытие с этим вопрос , который охватывает проблему с другой стороны.

20
задан Ash 17 August 2009 в 07:39
поделиться

4 ответа

Согласно документам :

Общие операции файловой системы могут поднять более одного события. За например, когда файл перемещается из одного каталог в другой, несколько OnChanged и некоторые OnCreated и Могут возникнуть события OnDeleted. Перемещение файла - сложная операция который состоит из нескольких простых операций, поэтому возникает несколько события.

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

13
ответ дан 30 November 2019 в 01:05
поделиться

Насколько я понимаю, событие Renamed предназначено для перемещаемых файлов ...?

Моя ошибка - в документации конкретно говорится, что только файлы внутри перемещенная папка считается «переименованной» в операции вырезания и вставки:

Операционная система и объект FileSystemWatcher интерпретируют действие вырезания и вставки или действие перемещения как действие переименования папки и ее содержимого. Если вы вырезаете и вставляете папку с файлами в просматриваемую папку, объект FileSystemWatcher сообщает только о папке как о новой, но не о ее содержимом, поскольку они, по сути, только переименованы.

Он также говорит о перемещении файлов:

Common операции файловой системы могут вызвать более одного события. Например, когда файл перемещается из одного каталога в другой, могут возникать несколько событий OnChanged и некоторые события OnCreated и OnDeleted.

2
ответ дан 30 November 2019 в 01:05
поделиться

Насколько я понимаю, событие Переименовано предназначено для перемещаемых файлов ...?

Моя ошибка - в документации конкретно говорится, что только файлы внутри перемещенная папка считается "переименованной" в операции вырезания и вставки:

Операционная система и объект FileSystemWatcher интерпретируют действие вырезания и вставки или действие перемещения как действие переименования папки и ее содержимого. Если вы вырезаете и вставляете папку с файлами в просматриваемую папку, объект FileSystemWatcher сообщает только о папке как о новой, но не о ее содержимом, поскольку они, по сути, только переименованы.

Он также говорит о перемещении файлов:

Common операции файловой системы могут вызвать более одного события. Например, когда файл перемещается из одного каталога в другой, могут возникать несколько событий OnChanged и некоторые события OnCreated и OnDeleted. Перемещение файла - это сложная операция, состоящая из нескольких простых операций, поэтому возникает несколько событий.

3
ответ дан 30 November 2019 в 01:05
поделиться

Я рискну предположить, что «ход» действительно не существует, так что вам просто нужно будет искать « delete ', а затем отметьте этот файл как тот, который может быть `` возможно перемещен' ', а затем, если вы увидите `` создать' 'для него вскоре после этого,

2
ответ дан 30 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: