Spec-Zone.ru › OpenJDK 24

Интерфейс 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(java.lang.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 - Если произошла ошибка ввода-вывода или атрибут не существует

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/file/attribute/UserDefinedFileAttributeView.html

Spec-Zone.ru

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