Подтвердить что ты не робот

Java.nio.file.WatchEvent дает мне только относительный путь. Как я могу получить абсолютный путь к модифицированному файлу?

Я использую Java 7, java.nio.file.WatchEvent вместе с WatchService. После регистрации, когда я просматриваю события ENTRY_MODIFY, я не могу добраться до абсолютного пути файла для события. Есть ли способ добраться до абсолютного пути файла из объекта WatchEvent?

4b9b3361

Ответ 1

Вам нужно получить родительский каталог из WatchKey для разрешения полного пути

WatchKey key;
WatchEvent<Path> event;

Path dir = (Path)key.watchable();
Path fullPath = dir.resolve(event.context());

Ответ 2

Предполагается, что вы захотите просмотреть несколько каталогов (например, отслеживать дерево файлов для изменений), сохранив зарегистрированный WatchKey, а связанный с ним Path в Map<WatchKey, Path> также будет жизнеспособным решением.

Когда событие запускается, Map может быть запрошено связанный Path с данным WatchKey, а затем Path измененного файла может быть разрешен с помощью Path WatchKey связано с.

Ответ 3

String fullPath = path.toString() + "\\" + event.context(). toString();

: D

Ответ 4

Определите, какой у вас объект, вы можете получить абсолютный путь:

Path.toAbsolutePath()

File.getAbsoluteFile()