Я использую Java 7, java.nio.file.WatchEvent вместе с WatchService. После регистрации, когда я просматриваю события ENTRY_MODIFY, я не могу добраться до абсолютного пути файла для события. Есть ли способ добраться до абсолютного пути файла из объекта WatchEvent?
Java.nio.file.WatchEvent дает мне только относительный путь. Как я могу получить абсолютный путь к модифицированному файлу?
Ответ 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()