Spec-Zone.ru › OpenJDK 25

Класс 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 подлежит удалению в будущей версии.
Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку Security Manager больше не поддерживается.
Этот класс представляет доступ к файлу или каталогу. 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

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

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

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

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 должны храниться таким образом, чтобы их можно было добавлять в коллекцию в любом порядке, но при этом метод 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.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/FilePermission.html

Spec-Zone.ru

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