Назад Зміст Вперед

11.12 Інтерфейси атрибутів файлів

З файлами пов'язаний ряд атрибутів, що позначають час створення файлу, час його останньої модифікації, розмір файлу або каталог. Система введення-виведення NIO організовує атрибути файлів у вигляді ієрархії різних інтерфейсів, визначених в пакеті java.nio.file.attribute. На вершині цієї ієрархії знаходиться інтерфейс BasicFileAttributes, інкапсулює ряд атрибутів, які зазвичай застосовуються в більшості файлових систем. Методи, визначені в інтерфейсі BasicFileAttributes, перераховані нижче.

FileTime  creationTime ( ) - Повертає час створення файлу. Якщо цей атрибут НЕ підтримується файловою системою, то повертається значення, залежне від конкретної реалізації.
Object fileKey ( ) - Повертає файловий ключ. Якщо цей атрибут не підтримується файловою системою, то повертається значення null.
Boolean isDirectory ( ) - Повертає логічне значення  true, якщо файл є каталогом.
Boolean isOther ( ) - Повертає логічне значення true, якщо файл є символічним посиланням або каталогом, а не файлом.
Boolean isReqularFile ( ) - Повертає логічне значення true, якщо файл являється звичайним файлом, а не каталогом або символічним посиланням.
Boolean isSymbolicLink ( ) - Повертає логічне значення true, якщо файл є символічним посиланням.
FileTime lastAccessTime ( ) - Повертає час останнього звернення до файлу, якщо атрибут не підтримує файлову систему, то повертається значення, залежне від конкретної реалізації.
FileTime lastModifiedTime ( ) - Повертає час останньої модифікації файлу, якщо цей атрибут не підтримує файлову систему, то повертається значення, залежне від конкретної реалізації.
long size ( ) - Повертає розмір файлу.

Похідними від інтерфейсу BasicFileAttributes є наступні два інтерфейси: DosFileAttributes і PosixFileAttributes. Зокрема, інтерфейс DosFileAttributes описує атрибути, пов'язані з файлової системою FAT, які були спочатку визначені в файлової системі DOS. В цьому
інтерфейсі визначаються методи, перераховані нижче
Boolean isArchive ( ) - Повертає логічне значення true, якщо файл позначений як архівний, а інакше - логічне значення false.
Boolean isHidden ( ) - Повертає логічне значення true, якщо файл позначений як прихований, а інакше - логічне значення false.
Boolean isReadOnly ( ) - Повертає логічне значення true, якщо файл позначений як доступний тільки для читання, а інакше - логічне значення false.
Boolean isSystem ( ) - Повертає логічне значення true, якщо файл позначається як системний, а інакше - логічне значення false.

Інтерфейс PosixFileAttributes інкапсулює атрибути, за  стандартами POSIX (Portable Operating System Interface - переносимий інтерфейс операційних систем). У цьому інтерфейсі визначаються методи 
GroupPrincipal group ( ) - повертає групового власника файлу ,
UserPrincipal owner ( ) - повертає окремого власника файлу та
Set<PosixFilePermission> permissions ( ) - повертає повноваження доступу до файлу.

Є різні способи доступу до атрибутів файлів. Зокрема, викликавши статичний метод readAttributes (), визначений в класі Files, можна отримати об'єкт, що інкапсулює атрибути файлу. Нижче наведена одна із загальних форм оголошення цього методу.
static <Аextends BasicFileAttributes>
А readAttributes ( Path шлях , Class<A> тип_атрибута,
LinkOption . . . параметри) throws IOException

Цей метод повертає посилання на об'єкт, що позначає атрибути файлу вказаним шляхом. Конкретний тип атрибутів вказується у вигляді об'єкта типу Class за допомогою параметра тип_атрибута. Наприклад, для отримання основних атрибутів файлу слід передати в якості параметра тип_атрибута об'єкт типу BasicFileAttributes.class, для отримання атрибутів DOS - об'єкт типу DosFileAttributes.class, а для отримання атрибутів РОSIХ - об'єкт типу PosixFileAttributes.class. Додаткові, але необов'язкові параметри посилань передаються як аргумент параметри. Якщо ж аргумент параметри не визначений, то слідують символічні посилання. 
Метод readAttributes () повертає посилання на необхідний атрибут. Якщо ж тип необхідного атрибуту недоступний, то генерується виняток типу UnsupportedOperationException. Використовуючи об'єкт, що повертається цим методом, можна звернутися до атрибутів файлу. 

Ще один спосіб доступу до атрибутів файлу полягає в тому, щоб викликати метод getFileAttributeView (), визначений в класі Files. В системі вводу-виведення NIO визначається кілька інтерфейсів для уявлень атрибутів, в тому числі AttributeView, BasicFileAttributeView, DosFileAttributeView і PosixFileAttributeView
Слід пам'ятати, що всі допустимі атрибути файлів підтримуються не у всіх файлових системах.
.