Если у вас есть вопросы по поводу файла или каталога, например, является ли он скрытым, является ли он каталогом, каков его размер и кому он принадлежит, вы можете получить ответы на эти (и многие другие) вопросы из метаданных , который является данными о других данных.
NIO.2 связывает понятие метаданных с атрибутами и обеспечивает доступ к ним через пакет java.nio.file.attribute . Поскольку разные файловые системы имеют разные представления о том, какие атрибуты должны отслеживаться, NIO.2 группирует атрибуты в представления, каждое из которых сопоставляется с конкретной реализацией файловой системы.
Как правило, представления предоставляют атрибуты оптом через общий метод readAttributes() . Кроме того, вы можете извлечь и установить один атрибут с помощью getAttribute() и setAttribute( соответственно, доступных в классе java.nio.file.Files . В зависимости от представления для дополнительных задач доступны другие методы.
Здесь я объясню, как с NIO.2 вы можете управлять более подробной информацией о метаданных файлов, чем когда-либо прежде. Атрибуты разделены на категории, и теперь они также охватывают системы POSIX .
Прежде чем пытаться получить доступ к атрибутам представления, убедитесь, что ваша файловая система поддерживает соответствующее представление.
NIO.2 поставляется с набором из шести представлений ( Basic Dos , POSIX FileOwner , ACL и UserDefinedFileAttributeView ).
- POSIX (Портативный интерфейс операционной системы для UNIX).
- Все файловые системы поддерживают базовое представление, поэтому вы должны получить хотя бы базовое имя в своем выводе.
Поддерживаемые виды:
- BasicFileAttributeView
Это представление основных атрибутов, которые должны поддерживаться всеми реализациями файловой системы. Имя представления атрибута является основным. - DosFileAttributeView
Это представление предоставляет четыре стандартных поддерживаемых атрибута в файловых системах, которые поддерживают атрибуты DOS. Имя представления атрибута — dos. - PosixFileAttributeView
Это представление расширяет представление базовых атрибутов атрибутами, поддерживаемыми в файловых системах, которые поддерживают семейство стандартов POSIX (Portable Operating System Interface для Unix), таких как Unix. Имя представления атрибута — posix. - FileOwnerAttributeView
Это представление поддерживается любой реализацией файловой системы, которая поддерживает концепцию владельца файла. Имя представления атрибута — владелец. - AclFileAttributeView
Это представление поддерживает чтение или обновление ACL файла. Модель ACL NFSv4 поддерживается. Имя представления атрибута — acl. - UserDefinedFileAttributeView
Это представление включает поддержку метаданных, определенных пользователем.
Вот фрагменты кода, которые показывают различные операции
- Получить все поддерживаемые представления файловой системы
123456789
importstaticjava.lang.System.out;.......FileSystem fs = FileSystems.getDefault();for(String sfsView : fs.supportedFileAttributeViews()) {out.println(sfsView);} - Проверьте, поддерживает ли хранилище файлов определенный вид
Вы можете проверить определенное представление в хранилище файлов, вызвав методFileStore.supportsFileAttributeView(). Вы можете передать желаемое представление в виде строки или имени класса.01020304050607080910importstaticjava.lang.System.out;.......FileSystem fs = FileSystems.getDefault();for(FileStore fileStore : fs.getFileStores()) {booleansupported = fileStore.supportsFileAttributeView(BasicFileAttributeView.class);out.println("Is "+ fileStore.name() +": supports \'basic file attribute view\' ---> "+ (supported ?"Yes":"No"));} - Проверьте, поддерживает ли хранилище файлов, в котором находится конкретный файл, одно представление
Кроме того, вы можете проверить, поддерживает ли хранилище файлов, в котором находится конкретный файл, одно представление.0102030405060708091011121314importstaticjava.lang.System.out;importstaticjava.lang.System.err;.......FileSystem fs = FileSystems.getDefault();try{FileStore store = getFileStore(path);booleansupported = store.supportsFileAttributeView("acl");out.println("Is "+ store.name() +": supports \'ACL file attribute view\' ---> "+ (supported ?"Yes":"No"));}catch(IOException ex) {err.println(ex);}
Вот и все, веселись, если тебе нравится, поделись.
Ресурсы:
- JDK7: Часть 1. Сила Java 7 NIO.2 (JSR 203) (важные понятия)
- JSR 203: больше новых API ввода-вывода для платформы JavaTM («NIO.2»)