Интерфейс PosixFileAttributeView
- Все супер-интерфейсы:
-
AttributeView,BasicFileAttributeView,FileAttributeView,FileOwnerAttributeView
public interface PosixFileAttributeView extends BasicFileAttributeView, FileOwnerAttributeView
Операционные системы, которые реализуют семейство стандартов POSIX, обычно используют файловые системы, которые имеют владельца файла, группу-владельца и связанные с ними права доступа. Это представление атрибутов файла обеспечивает доступ для чтения и записи к этим атрибутам.
Метод readAttributes используется для чтения атрибутов файла. Владелец файла owner представлен объектом UserPrincipal, который является идентификатором владельца файла для целей контроля доступа. group-owner, представленный объектом GroupPrincipal, является идентификатором владельца группы, где группа — это идентификатор, созданный в административных целях для определения прав доступа для членов группы.
Атрибут permissions представляет собой набор прав доступа. Это представление атрибутов файла предоставляет доступ к девяти битам разрешений, определенным классом PosixFilePermission. Эти девять битов разрешений определяют доступ к чтению, записи и выполнению для владельца файла, группы и других (другие означают идентификаторы, отличные от владельца и членов группы). Некоторые операционные системы и файловые системы могут предоставлять дополнительные биты разрешений, но доступ к этим другим битам не определяется этим классом в этом релизе.
Пример использования: Предположим, нам нужно вывести владельца и права доступа к файлу:
Path file = ...
PosixFileAttributes attrs = Files.getFileAttributeView(file, PosixFileAttributeView.class)
.readAttributes();
System.out.format("%s %s%n",
attrs.owner().getName(),
PosixFilePermissions.toString(attrs.permissions()));
Динамический доступ
Когда требуется динамический доступ к атрибутам файла, атрибуты, поддерживаемые этим представлением атрибутов, определяются как BasicFileAttributeView и FileOwnerAttributeView, а также дополнительно поддерживаются следующие атрибуты:
Имя Тип "permissions" Set<PosixFilePermission>"group" GroupPrincipal
Метод getAttribute может использоваться для чтения любого из этих атрибутов или любого из атрибутов, определенных BasicFileAttributeView, как если бы вызывался метод readAttributes().
Метод setAttribute может использоваться для обновления атрибутов последнего изменения, последнего доступа или создания файла, как определено в BasicFileAttributeView. Он также может использоваться для обновления разрешений, владельца или группы-владельца, как если бы вызывались методы setPermissions, setOwner и setGroup соответственно.
Установка начальных разрешений
Реализации, поддерживающие это представление атрибутов, могут также поддерживать установку начальных разрешений при создании файла или каталога. Начальные разрешения предоставляются методам createFile или createDirectory в виде FileAttribute с name "posix:permissions" и value, представляющим собой набор разрешений. В следующем примере используется метод asFileAttribute для создания FileAttribute при создании файла:
Path path = ...
Set<PosixFilePermission> perms =
EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ);
Files.createFile(path, PosixFilePermissions.asFileAttribute(perms));
Когда права доступа устанавливаются во время создания файла, фактическое значение разрешений может отличаться от значения объекта атрибута. Причины этого зависят от реализации. Например, в системах UNIX процесс имеет umask, который влияет на биты разрешений вновь созданных файлов. Если реализация поддерживает установку прав доступа, а базовая файловая система поддерживает права доступа, то требуется, чтобы значение фактических прав доступа было равно или меньше значения атрибута, предоставленного методам createFile или createDirectory. Другими словами, файл может быть более защищенным, чем запрашивалось.
- С версии:
- 1.7
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
name() |
Возвращает имя представления атрибутов. |
PosixFileAttributes |
readAttributes() |
Читает основные атрибуты файла как пакетную операцию. |
void |
setGroup |
Обновляет группу-владельца файла. |
void |
setPermissions |
Обновляет права доступа к файлу. |
Методы, объявленные в интерфейсе java.nio.file.attribute.BasicFileAttributeView
setTimes
Методы, объявленные в интерфейсе java.nio.file.attribute.FileOwnerAttributeView
getOwner, setOwner
Подробное описание методов
name
String name()
"posix".- Указано в:
-
nameв интерфейсеAttributeView - Указано в:
-
nameв интерфейсеBasicFileAttributeView - Указано в:
-
nameв интерфейсеFileOwnerAttributeView - Возвращает:
- имя представления атрибутов
readAttributes
PosixFileAttributes readAttributes() throws IOException
BasicFileAttributeViewЗависит от реализации, являются ли все атрибуты файла атомарной операцией по отношению к другим операциям файловой системы.
- Указано в:
-
readAttributesв интерфейсеBasicFileAttributeView - Возвращает:
- атрибуты файла
- Исключения:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию, если установлен менеджер безопасности и он запрещаетRuntimePermission("accessUserInformation")или его методcheckReadзапрещает доступ к файлу для чтения.
setPermissions
void setPermissions(Set<PosixFilePermission> perms) throws IOException
- Параметры:
-
perms- новый набор разрешений - Исключения:
-
ClassCastException- если наборы содержат элементы, которые не являются типаPosixFilePermission -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию, если установлен менеджер безопасности и он запрещаетRuntimePermission("accessUserInformation")или его методcheckWriteзапрещает доступ к файлу для записи.
setGroup
void setGroup(GroupPrincipal group) throws IOException
- Параметры:
-
group- новый владелец группы файла - Исключения:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию, если установлен менеджер безопасности и он запрещаетRuntimePermission("accessUserInformation")или его методcheckWriteзапрещает доступ к файлу для записи.
© 1993, 2023, 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/21/docs/api/java.base/java/nio/file/attribute/PosixFileAttributeView.html