Spec-Zone.ru › OpenJDK 25

Интерфейс UserDefinedFileAttributeView

Все суперинтерфейсы:
AttributeView, FileAttributeView
public interface UserDefinedFileAttributeView extends FileAttributeView
Представление атрибутов файла, обеспечивающее доступ к пользовательским атрибутам файла, иногда называемым расширенными атрибутами. Пользовательские атрибуты файла используются для хранения метаданных, связанных с файлом и не имеющих значения для файловой системы. Это представление предназначено прежде всего для реализаций файловых систем, непосредственно поддерживающих такие возможности, но может быть эмулировано. Подробности такой эмуляции зависят от реализации и поэтому здесь не определяются.

Это FileAttributeView предоставляет доступ к пользовательским атрибутам файла в виде набора пар «имя/значение», где имя атрибута представлено объектом String. При доступе к атрибуту реализации может потребоваться кодировать и декодировать его значение в соответствии с представлением платформы или файловой системы. Содержимое значения непрозрачно. Это представление атрибутов определяет методы read и write для чтения значения в ByteBuffer или записи значения из него. Это FileAttributeView не предназначено для использования, если размер значения атрибута превышает Integer.MAX_VALUE.

Метод supportsFileAttributeView можно использовать, чтобы проверить, поддерживает ли конкретное FileStore хранение пользовательских атрибутов.

Если требуется динамический доступ к атрибутам файла, для чтения значения атрибута можно использовать метод getAttribute. Значение атрибута возвращается в виде массива байтов (byte[]). Метод setAttribute можно использовать для записи значения пользовательского атрибута из буфера (как если бы был вызван метод write) или массива байтов (byte[]).

Начиная с версии:
1.7

Краткое описание методов

Модификатор и тип Метод Описание
void delete(String name)
Удаляет пользовательский атрибут.
List<String> list()
Возвращает список имен пользовательских атрибутов.
String name()
Возвращает имя этого представления атрибутов.
int read(String name, ByteBuffer dst)
Считывает значение пользовательского атрибута в буфер.
int size(String name)
Возвращает размер значения пользовательского атрибута.
int write(String name, ByteBuffer src)
Записывает значение пользовательского атрибута из буфера.

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

name

String name()
Возвращает имя этого представления атрибутов. Представления атрибутов этого типа имеют имя "user".
Определено в:
name в интерфейсе AttributeView
Возвращает:
имя представления атрибутов

list

List<String> list() throws IOException
Возвращает список имен пользовательских атрибутов.
Возвращает:
Немодифицируемый список имен пользовательских атрибутов файла
Выбрасывает:
IOException — если произошла ошибка ввода-вывода

size

int size(String name) throws IOException
Возвращает размер значения пользовательского атрибута.
Параметры:
name — имя атрибута
Возвращает:
Размер значения атрибута в байтах.
Выбрасывает:
ArithmeticException — если размер атрибута превышает Integer.MAX_VALUE
IOException — если произошла ошибка ввода-вывода

read

int read(String name, ByteBuffer dst) throws IOException
Считывает значение пользовательского атрибута в буфер.

Этот метод считывает значение атрибута в заданный буфер как последовательность байтов и завершается ошибкой, если оставшегося в буфере места недостаточно для чтения значения атрибута целиком. Количество байтов, записанных в буфер, равно n, где n — размер значения атрибута. Первый байт последовательности находится по индексу p, а последний — по индексу p + n - 1, где p — текущая позиция буфера. После возврата позиция буфера будет равна p + n; его предел не изменится.

Пример использования: Предположим, мы хотим считать тип MIME файла, сохраненный в виде пользовательского атрибута с именем "user.mimetype".

    UserDefinedFileAttributeView view =
        Files.getFileAttributeView(path, UserDefinedFileAttributeView.class);
    String name = "user.mimetype";
    ByteBuffer buf = ByteBuffer.allocate(view.size(name));
    view.read(name, buf);
    buf.flip();
    String value = Charset.defaultCharset().decode(buf).toString();
Параметры:
name — имя атрибута
dst — буфер назначения
Возвращает:
Количество прочитанных байтов, возможно, ноль
Выбрасывает:
IllegalArgumentException — если буфер назначения доступен только для чтения
IOException — если произошла ошибка ввода-вывода или в буфере назначения недостаточно места для значения атрибута
См. также:
  • size(String)

write

int write(String name, ByteBuffer src) throws IOException
Записывает значение пользовательского атрибута из буфера.

Этот метод записывает значение атрибута из заданного буфера как последовательность байтов. Размер передаваемого значения равен r, где r — количество оставшихся в буфере байтов, то есть src.remaining(). Последовательность байтов передается из буфера начиная с индекса p, где p — текущая позиция буфера. После возврата позиция буфера будет равна p + n, где n — количество переданных байтов; его предел не изменится.

Если атрибут с заданным именем уже существует, его значение заменяется. Если атрибут не существует, он создается. Зависит от реализации, являются ли проверка существования атрибута и его создание атомарными по отношению к другим операциям файловой системы.

Если для хранения атрибута недостаточно места или имя либо значение атрибута превышает максимальный размер, определяемый реализацией, выбрасывается исключение IOException.

Пример использования: Предположим, мы хотим записать тип MIME файла в виде пользовательского атрибута:

    UserDefinedFileAttributeView view =
        Files.getFileAttributeView(path, UserDefinedFileAttributeView.class);
    view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));
Параметры:
name — имя атрибута
src — буфер, содержащий значение атрибута
Возвращает:
Количество записанных байтов, возможно, ноль
Выбрасывает:
IOException — если произошла ошибка ввода-вывода

delete

void delete(String name) throws IOException
Удаляет пользовательский атрибут.
Параметры:
name — имя атрибута
Выбрасывает:
IOException — если произошла ошибка ввода-вывода или атрибут не существует

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/nio/file/attribute/UserDefinedFileAttributeView.html

Spec-Zone.ru

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