Spec-Zone.ru › OpenJDK 27

Класс FilePermission

java.lang.Object
java.security.Permission
java.io.FilePermission
Все реализованные интерфейсы:
Serializable, Guard
@Deprecated(since="25", forRemoval=true) public final class FilePermission extends Permission implements Serializable
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку диспетчер безопасности больше не поддерживается.
Этот класс представляет доступ к файлу или каталогу. FilePermission состоит из пути и набора действий, допустимых для этого пути.

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

Путь, состоящий из специального токена "<<ALL FILES>>", соответствует любому файлу.

Примечание. Путь, состоящий из одного символа "*", указывает на все файлы в текущем каталоге, а путь, состоящий из одного символа "-", — на все файлы в текущем каталоге, а также на все файлы и подкаталоги, содержащиеся в текущем каталоге, включая вложенные.

Действия передаются конструктору в виде строки, содержащей список из одного или нескольких ключевых слов, разделенных запятыми. Возможные ключевые слова: "read", "write", "execute", "delete" и "readlink".

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

Начиная с:
1.2
См. также:
  • Permission
  • Permissions
  • PermissionCollection

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

Конструктор Описание
FilePermission(String path, String actions)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Создает новый объект FilePermission с указанными действиями.

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

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

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

checkGuard, getName, toString
Модификатор и тип Метод Описание
void checkGuard(Object object)
Реализует интерфейс guard для разрешения.
final String getName()
Возвращает имя этого Permission.
String toString()
Возвращает строку с описанием этого Permission.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

FilePermission

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

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

Путь, состоящий из одного символа "*", указывает на все файлы в текущем каталоге, а путь, состоящий из одного символа "-", — на все файлы в текущем каталоге, а также на все файлы и подкаталоги, содержащиеся в текущем каталоге, включая вложенные.

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

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

Если значение системного свойства установлено в true, path приводится к каноническому виду и сохраняется как объект String с именем 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)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Проверяет, «подразумевает» ли этот объект FilePermission указанное разрешение.

Точнее, этот метод возвращает true в следующих случаях:

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

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

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

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

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

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

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

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

equals

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

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

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

hashCode

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

getActions

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

newPermissionCollection

public PermissionCollection newPermissionCollection()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает новый объект PermissionCollection для хранения объектов FilePermission.

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

Например, имеются два объекта 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. Семантика «подразумевания» для FilePermission корректно реализуется объектом PermissionCollection, возвращаемым этим методом newPermissionCollection.
Переопределяет:
newPermissionCollection в классе Permission
Возвращает:
новый объект PermissionCollection, предназначенный для хранения объектов FilePermission.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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