Spec-Zone.ru › OpenJDK 24

Класс FilePermission

java.lang.Object
java.security.Permission
java.io.FilePermission
Все реализованные интерфейсы:
Serializable, Guard
public final class FilePermission extends Permission implements Serializable
Этот класс представляет доступ к файлу или каталогу. FilePermission состоит из пути к файлу или каталогу и набора действий, допустимых для этого пути.

Путь - это путь к файлу или каталогу, которому предоставлены указанные действия. Путь, который заканчивается «/*/» (где «/» - символ разделителя файлов, File.separatorChar) указывает на все файлы и каталоги, содержащиеся в этом каталоге. Путь, который заканчивается «/-», указывает (рекурсивно) на все файлы и подкаталоги, содержащиеся в этом каталоге. Такой путь называется универсальным путем. В противном случае это простой путь.

Путь, состоящий из специального маркера «<<ВСЕ ФАЙЛЫ>>», соответствует любому файлу.

Примечание: Путь, состоящий из одного «*», указывает на все файлы в текущем каталоге, а путь, состоящий из одного «-», указывает на все файлы в текущем каталоге и (рекурсивно) все файлы и подкаталоги, содержащиеся в текущем каталоге.

Действия передаются в конструктор в строке, содержащей список одного или нескольких ключевых слов, разделенных запятыми. Возможные ключевые слова: «чтение», «запись», «выполнение», «удаление» и «ссылка».

Строка действий преобразуется в нижний регистр перед обработкой.

Прим. для API:
Этот разрешение не может быть использовано для управления доступом к ресурсам, так как Security Manager больше не поддерживается.
С:
1.2
См. также:
  • Permission
  • Permissions
  • PermissionCollection

Краткое описание конструкторов

Конструктор Описание
FilePermission(String path, String actions)
Создает новый объект FilePermission с указанными действиями.

Краткое описание методов

Модификатор и тип Метод Описание
boolean equals(Object obj)
Проверяет два объекта FilePermission на равенство.
String getActions()
Возвращает «каноническое строковое представление» действий.
int hashCode()
Возвращает значение хэш-кода для этого объекта.
boolean implies(Permission p)
Проверяет, «подразумевает» ли этот объект FilePermission указанное разрешение.
PermissionCollection newPermissionCollection()
Возвращает новый объект PermissionCollection для хранения объектов FilePermission.

Методы, объявленные в классе java.security.Permission

checkGuard, getName, toString

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

FilePermission

public FilePermission(String path, String actions)
Создаёт новый объект FilePermission с указанными действиями. path — имя пути к файлу или каталогу, а actions — список действий, разделённых запятыми, которые разрешены для файла или каталога. Возможные действия: "read", "write", "execute", "delete" и "readlink".

Имя пути, заканчивающееся на "/*" (где "/" — символ разделителя пути, File.separatorChar) указывает на все файлы и каталоги, содержащиеся в этом каталоге. Имя пути, заканчивающееся на "/-", указывает (рекурсивно) на все файлы и подкаталоги, содержащиеся в этом каталоге. Специальное имя пути "<<ALL FILES>>" соответствует любому файлу.

Имя пути, состоящее из одного символа "*", указывает на все файлы в текущем каталоге, а имя пути, состоящее из одного символа "-", указывает на все файлы в текущем каталоге и (рекурсивно) все файлы и подкаталоги, содержащиеся в текущем каталоге.

Имя пути, содержащее пустую строку, представляет собой пустой путь.

Примечание по реализации:
В этой реализации системная переменная jdk.io.permissionsUseCanonicalPath определяет, как обрабатывается и хранится аргумент path.

Если значение системной переменной установлено в true, path канонизируется и хранится как строковый объект с именем cpath. Это означает, что относительный путь преобразуется в абсолютный путь, путь в формате Windows DOS 8.3 расширяется до длинного пути, символическая ссылка разрешается до её целевого объекта и т. д.

Если значение системной переменной установлено в false, path преобразуется в объект Path с именем npath после normalization. Канонизация не выполняется, что означает, что к файловой системе не обращается. Если при преобразовании возникает исключение InvalidPathException, этот FilePermission будет помечен как недопустимый.

В любом случае, символ "*" или "-" в конце маски path удаляется перед канонизацией или нормализацией. Он хранится в отдельном поле флага маски.

Значение по умолчанию для системной переменной jdk.io.permissionsUseCanonicalPath в этой реализации — false.

Значение также можно установить с помощью системной переменной с тем же именем, но системная переменная переопределит значение системной переменной безопасности.

Параметры:
path - путь к файлу/каталогу.
actions - строка действий.
Исключения:
IllegalArgumentException - если actions null, пустое, некорректное или содержит действие, отличное от указанных возможных действий

Подробное описание методов

implies

public boolean implies(Permission p)
Проверяет, "включает ли" этот объект FilePermission указанное разрешение.

Более точно, этот метод возвращает true, если:

  • p является экземпляром FilePermission,
  • действия p являются правильным подмножеством действий этого объекта, и
  • имя пути p подразумевается именем пути этого объекта. Например, "/tmp/*" подразумевает "/tmp/foo", так как "/tmp/*" охватывает все файлы в каталоге "/tmp", включая файл с именем "foo".

Точно, простое имя пути подразумевает другое простое имя пути только тогда и только тогда, когда они равны. Простое имя пути никогда не подразумевает имя пути с маской. Имя пути с маской подразумевает другое имя пути с маской только тогда и только тогда, когда все простые имена путей, подразумеваемые последним, подразумеваются первым. Имя пути с маской подразумевает простое имя пути, только если

  • если флаг маски — "*", путь простого имени пути должен находиться непосредственно внутри пути имени пути с маской.
  • если флаг маски — "-", путь простого имени пути должен рекурсивно находиться внутри пути имени пути с маской.

"<<ALL FILES>>" подразумевает любое другое имя пути. Никакое имя пути, кроме "<<ALL FILES>>" само по себе, не подразумевает "<<ALL FILES>>".

Определено в:
implies в классе Permission
Примечание по реализации:
Если jdk.io.permissionsUseCanonicalPath равно true, простое имя пути находится внутри маскированного пути, если и только если после удаления имени базы (последнего имени в последовательности имён пути) из первого оставшаяся часть равна последнему, простое имя пути рекурсивно находится внутри маскированного пути, если и только если оно начинается с последнего.

Если jdk.io.permissionsUseCanonicalPath равно false, простое имя пути находится внутри маскированного пути, если и только если simple_npath.relativize(wildcard_npath) точно равно "..", простое имя пути рекурсивно находится внутри маскированного пути, если и только если simple_npath.relativize(wildcard_npath) является последовательностью одной или нескольких "..". Это означает, что "/-" подразумевает "/foo", но не "foo".

Некорректное имя пути не подразумевает никакого объекта, кроме самого себя. Некорректное имя пути не подразумевается никаким объектом, кроме самого себя или имени пути с маской на "<<ALL FILES>>", чьи действия являются супермножеством этого некорректного имени пути. Даже если два некорректных имени пути созданы с тем же некорректным путём, одно не подразумевает другое.

Параметры:
p - разрешение для проверки.
Возвращает:
true, если указанное разрешение не null и подразумевается этим объектом, false в противном случае.

equals

public boolean equals(Object obj)
Проверяет два объекта FilePermission на равенство. Проверяет, что obj является FilePermission и имеет то же имя пути и те же действия, что и этот объект.
Определено в:
equals в классе Permission
Примечание по реализации:
Более точно, два имени пути одинаковы, если и только если они имеют один и тот же флаг маски, и их cpath (если jdk.io.permissionsUseCanonicalPath равно true) или npath (если jdk.io.permissionsUseCanonicalPath равно false) равны. Или они оба равны "<<ALL FILES>>".

Когда jdk.io.permissionsUseCanonicalPath равно false, некорректное имя пути не равно никакому объекту, кроме самого себя, даже если они созданы с использованием того же некорректного пути.

Параметры:
obj - объект, с которым мы проверяем равенство.
Возвращает:
true, если obj является FilePermission и имеет то же имя пути и те же действия, что и этот объект FilePermission, false в противном случае.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает значение хэш-кода для этого объекта.
Определено в:
hashCode в классе Permission
Возвращает:
значение хэш-кода для этого объекта.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

getActions

public String getActions()
Возвращает "каноническое строковое представление" действий. То есть, этот метод всегда возвращает имеющиеся действия в следующем порядке: read, write, execute, delete, readlink. Например, если этот объект FilePermission разрешает действия write и read, вызов getActions вернёт строку "read,write".
Определено в:
getActions в классе Permission
Возвращает:
каноническое строковое представление действий.

newPermissionCollection

public PermissionCollection newPermissionCollection()
Возвращает новый объект PermissionCollection для хранения объектов FilePermission.

Объекты FilePermission должны храниться таким образом, чтобы их можно было вставлять в коллекцию в любом порядке, но это также позволяет методу PermissionCollection implies быть реализованным эффективным (и согласованным) способом.

Например, если у вас есть два FilePermission:

  1. "/tmp/-", "read"
  2. "/tmp/scratch/foo", "write"

и вы вызываете метод implies с FilePermission:

     "/tmp/scratch/foo", "read,write",
 
то функция implies должна учитывать как разрешения "/tmp/-", так и "/tmp/scratch/foo", поэтому эффективное разрешение — "read,write", и implies возвращает true. Семантика "implies" для FilePermission обрабатывается объектом PermissionCollection, возвращаемым этим методом newPermissionCollection.
Переопределяет:
newPermissionCollection в классе Permission
Возвращает:
новый объект PermissionCollection, подходящий для хранения FilePermission.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/FilePermission.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API