Интерфейс UserDefinedFileAttributeView
- Все суперинтерфейсы:
- AttributeView, FileAttributeView
public interface UserDefinedFileAttributeView extends FileAttributeView
Представление атрибутов файла, определяемых пользователем, предоставляющее просмотр пользовательских атрибутов файла, иногда называемых расширенными атрибутами. Пользовательские атрибуты файла используются для хранения метаданных файла, не имеющих смысла для файловой системы. Прежде всего, предназначено для реализаций файловой системы, которые напрямую поддерживают такую возможность, но могут быть эмулированы. Подробности такой эмуляции сильно зависят от реализации и поэтому не определены.
Данное FileAttributeView предоставляет просмотр пользовательских атрибутов файла как набора пар имя/значение, где имя атрибута представлено String. При доступе к атрибуту реализация может потребовать кодирования и декодирования из представления платформы или файловой системы. Значение имеет непрозрачное содержимое. Данное представление атрибутов определяет методы read и write для чтения значения в или записи из ByteBuffer. Данное FileAttributeView не предназначено для использования в случаях, когда размер значения атрибута больше, чем Integer.MAX_VALUE.
Пользовательские атрибуты могут использоваться в некоторых реализациях для хранения атрибутов, связанных с безопасностью, поэтому, по крайней мере, в случае с поставщиком по умолчанию, все методы, которые обращаются к пользовательским атрибутам, требуют разрешения RuntimePermission("accessUserDefinedAttributes") при установленной менеджере безопасности.
Метод 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- Если произошла ошибка ввода-вывода -
SecurityException- В случае поставщика по умолчанию, если установлен менеджер безопасности и он отклоняетRuntimePermission("accessUserDefinedAttributes")или его методcheckReadотклоняет доступ для чтения к файлу.
size
int size(String name) throws IOException
Возвращает размер значения пользовательского атрибута.
- Параметры:
-
name- Имя атрибута - Возвращает:
- Размер значения атрибута в байтах.
- Исключение:
-
ArithmeticException- Если размер атрибута больше, чемInteger.MAX_VALUE -
IOException- Если произошла ошибка ввода-вывода -
SecurityException- В случае поставщика по умолчанию, если установлен менеджер безопасности и он отклоняетRuntimePermission("accessUserDefinedAttributes")или его методcheckReadотклоняет доступ для чтения к файлу.
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- Если произошла ошибка ввода-вывода или в буфере назначения недостаточно места для значения атрибута -
SecurityException- В случае поставщика по умолчанию, если установлен менеджер безопасности и он отклоняетRuntimePermission("accessUserDefinedAttributes")или его методcheckReadотклоняет доступ для чтения к файлу. - См. также:
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- Если произошла ошибка ввода-вывода -
SecurityException- В случае поставщика по умолчанию, если установлен менеджер безопасности и он отклоняетRuntimePermission("accessUserDefinedAttributes")или его методcheckWriteотклоняет доступ для записи к файлу.
delete
void delete(String name)
throws IOException Удаляет пользовательский атрибут.
- Параметры:
-
name- Имя атрибута - Исключение:
-
IOException- Если произошла ошибка ввода-вывода или атрибута не существует -
SecurityException- В случае поставщика по умолчанию, если установлен менеджер безопасности и он отклоняетRuntimePermission("accessUserDefinedAttributes")или его методcheckWriteотклоняет доступ для записи к файлу.
© 1993, 2020, 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.