Я думаю, что вы допустили ошибку: команда ls показывает существование /directory
, но код Java жалуется на /home/directory
- которого не существует, если у вас нет пользователя с именем directory
.
Исходя из вашей трассировки стека, я предполагаю, что вы сами создаете объект FilePermission
и передаете его AccessController.checkPermission (). Это не то, как он используется - класс FilePermission НЕ представляет разрешения файловой системы и НЕ проверяет их. Он используется только в SecurityManager
Java, например, он проверяет, содержит ли файл политики правила, позволяющие приложению получить доступ к файлу. Независимо от того, поддерживает ли локальная файловая система разрешения или нет, это не имеет значения.
Как подсказывает Божо, вы создаете объект java.io.File()
и используете методы canXXX()
, чтобы проверить, есть ли у вас доступ к папке или файлу.
Если вам нужна более подробная информация о разрешениях на уровне файловой системы для файла, вам нужно дождаться Java 7. См. Учебное пособие по Java NIO.2 , особенно пакет java.nio.file.attribute
.