|
Spec-Zone .ru
спецификации, руководства, описания, API
|
У Вас есть a Path экземпляр, представляющий файл или каталог, но тот файл, существует на файловой системе? Действительно ли это читаемо? Перезаписываемый? Исполнимая программа?
Методы в Path class является синтаксическим, означая, что они работают на Path экземпляр. Но в конечном счете следует получить доступ к файловой системе, чтобы проверить что деталь Path существует, или не существует. Можно сделать так с exists(Path, LinkOption...) и методы. Отметьте это !Files.exists(path) не эквивалентно Files.notExists(path). Когда Вы тестируете существование файла, три результата возможны:
Если оба exists и notExists возвратиться false, существование файла не может быть проверено.
Чтобы проверить, что программа может получить доступ к файлу как необходимый, можно использовать , , и методы.
Следующий фрагмент кода проверяет, что определенный файл существует и что у программы есть возможность выполнить файл.
Path file = ...;
boolean isRegularExecutableFile = Files.isRegularFile(file) &
Files.isReadable(file) & Files.isExecutable(file);
TOCTTOU (объявленный TOCK-также). Когда у Вас есть файловая система, которая использует символьные ссылки, возможно иметь два различных пути, которые определяют местоположение того же самого файла. метод сравнивает два пути, чтобы определить, определяют ли они местоположение того же самого файла на файловой системе. Например:
Path p1 = ...;
Path p2 = ...;
if (Files.isSameFile(p1, p2)) {
// Logic when the paths locate the same file
}