Класс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
checkGuard |
Реализует интерфейс 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 |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
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 должны храниться так, чтобы их можно было добавлять в коллекцию в любом порядке, но при этом метод implies класса PermissionCollection должен быть реализован эффективно и единообразно.
Например, имеются два объекта FilePermission:
-
"/tmp/-", "read" -
"/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.
© 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.