Интерфейс 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 |
Обновляет права доступа к файлу. |
Методы, объявленные в интерфейсе BasicFileAttributeView
setTimes | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
setTimes |
Обновляет любой или все атрибуты времени последнего изменения, последнего доступа и создания файла. |
Методы, объявленные в интерфейсе FileOwnerAttributeView
getOwner, setOwner | Модификатор и тип | Метод | Описание |
|---|---|---|
UserPrincipal |
getOwner() |
Читает владельца файла. |
void |
setOwner |
Обновляет владельца файла. |
Подробное описание методов
name
String name()
"posix".- Определено в:
-
nameв интерфейсеAttributeView - Определено в:
-
nameв интерфейсеBasicFileAttributeView - Определено в:
-
nameв интерфейсеFileOwnerAttributeView - Возвращает:
- имя представления атрибутов
readAttributes
PosixFileAttributes readAttributes() throws IOException
BasicFileAttributeViewЗависит от реализации, считываются ли все атрибуты файла атомарно относительно других операций с файловой системой.
- Определено в:
-
readAttributesв интерфейсеBasicFileAttributeView - Возвращает:
- атрибуты файла
- Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода
setPermissions
void setPermissions(Set<PosixFilePermission> perms) throws IOException
- Параметры:
-
perms— новый набор прав доступа - Выбрасывает:
-
ClassCastException— если набор содержит элементы, не относящиеся к типуPosixFilePermission -
IOException— если произошла ошибка ввода-вывода
setGroup
void setGroup(GroupPrincipal group) throws IOException
- Параметры:
-
group— новая группа-владелец файла - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода
© 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.