Класс FilePermission
- Все реализованные интерфейсы:
Serializable, Guard
@Deprecated(since="25", forRemoval=true) public final class FilePermission extends Permission implements Serializable
Путь — это путь к файлу или каталогу, для которых предоставлены указанные действия. Путь, заканчивающийся на "/*" (где "/" — символ-разделитель файлов, File.separatorChar), указывает на все файлы и каталоги, содержащиеся в этом каталоге. Путь, заканчивающийся на "/-", указывает (рекурсивно) на все файлы и подкаталоги, содержащиеся в этом каталоге. Такой путь называется путем с подстановочным символом. В противном случае это простой путь.
Путь, состоящий из специального токена "<<ALL FILES>>", соответствует любому файлу.
Примечание: путь, состоящий из одного символа "*", указывает на все файлы в текущем каталоге, тогда как путь, состоящий из одного символа "-", указывает на все файлы в текущем каталоге и (рекурсивно) на все файлы и подкаталоги, содержащиеся в текущем каталоге.
Действия передаются конструктору в виде строки, содержащей список из одного или нескольких ключевых слов, разделенных запятыми. Возможные ключевые слова: "read", "write", "execute", "delete" и "readlink".
Перед обработкой строка действий преобразуется в нижний регистр.
- С момента выпуска:
- 1.2
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
FilePermission |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Создает новый объект FilePermission с указанными действиями. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Проверяет, равны ли два объекта FilePermission. |
String |
getActions() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Возвращает «каноническое строковое представление» действий. |
int |
hashCode() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Возвращает значение хеш-кода этого объекта. |
boolean |
implies |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Проверяет, «подразумевает» ли этот объект FilePermission указанное разрешение. |
PermissionCollection |
newPermissionCollection() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Возвращает новый объект PermissionCollection для хранения объектов FilePermission. |
Методы, объявленные в классе Permission
checkGuard, getName, toString
Подробное описание конструкторов
FilePermission
public FilePermission(String path, String actions)
Путь, заканчивающийся на "/*" (где "/" — символ-разделитель файлов, 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)
В частности, этот метод возвращает 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)
- Определено в:
-
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. - См. также:
hashCode
public int hashCode()
- Определено в:
-
hashCodeв классеPermission - Возвращает:
- значение хеш-кода этого объекта.
- См. также:
getActions
public String getActions()
getActions вернет строку "read,write".- Определено в:
-
getActionsв классеPermission - Возвращает:
- каноническое строковое представление действий.
newPermissionCollection
public PermissionCollection newPermissionCollection()
Объекты FilePermission должны храниться таким образом, чтобы их можно было добавлять в коллекцию в любом порядке, но при этом метод PermissionCollection implies можно было реализовать эффективным (и согласованным) образом.
Например, если имеются два объекта FilePermission:
-
"/tmp/-", "read" -
"/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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/FilePermission.html