Как я могу обнаружить изменения в файлах из Windows? - PullRequest
3 голосов
/ 04 декабря 2010

Я хочу отслеживать изменения файлов внутри каталога и уведомлять веб-службы о каждом их изменении.

На Mac я знаю, что могу реагировать на события файловой системы , такие как создание, изменение и т. Д.

Какой лучший способ сделать это в Windows? Какой язык вы советуете для этого? (Я буду создавать базовый интерфейс для этого).

Ответы [ 3 ]

4 голосов
/ 04 декабря 2010

C # имеет класс System.IO.FileSystemWatcher, который, вероятно, будет делать то, что вы хотите.Подробнее на MDSN .Для C ++ см. этот вопрос StackOverflow .

4 голосов
/ 04 декабря 2010

Собственный (C ++ / C) API: ReadDirectoryChangesW .В .Net (C # и т. Д.) Это инкапсулировано в класс FileSystemWatcher .Программирование на C # намного проще, по этому URL есть пример кода.

Оба этих API могут быть случайными пропущенными событиями.Там нет никакого решения этого, о котором я знаю, нет какой-либо легкой альтернативы.Если ваш каталог не меняется так часто, он, скорее всего, будет хорошо работать для вас.

0 голосов
/ 27 июня 2018

С помощью Java мы можем использовать WatchService для определения типа событий, произошедших в определенном файле или даже каталоге.

Реализация проста, так как вы можете просто получить WatchService из FileSystemследующим образом:

1- Получите WatchService: WatchService watchService = FileSystems.getDefault (). newWatchService ();

2- Используйте WatchService в вашемfile:

FILE_LOCATION.register (watchService, StandardWatchEventKinds. ENTRY_MODIFY , StandardWatchEventKinds. ENTRY_DELETE , StandardWatchEventKinds. ENTRY_CREATE )

В конце концов, вы можете видеть все виды событий, которые произошли в вашем файле, как указано выше: StandardWatchEventKinds.ENTRY_MODIFY , которыеозначает, что ваш файл был изменен.

Для получения более подробной информации перейдите по ссылке ниже:

https://github.com/PascoalBayonne/Exercise/blob/master/src/nio/directory/watching/DirectoryWatching.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...