Spec-Zone.ru › OpenJDK 8

Класс FileSystem

  • java.lang.Object
    • java.nio.file.FileSystem
Все реализуемые интерфейсы:
Closeable, AutoCloseable

public abstract class FileSystem
extends Object
implements Closeable

Предоставляет интерфейс к файловой системе и является фабрикой для объектов доступа к файлам и другим объектам в файловой системе.

По умолчанию, файловая система, полученная вызовом метода FileSystems.getDefault, предоставляет доступ к файловой системе, доступной для виртуальной машины Java. Класс FileSystems определяет методы для создания файловых систем, обеспечивающих доступ к другим типам (пользовательским) файловых систем.

Файловая система является фабрикой для нескольких типов объектов:

  • Метод getPath преобразует зависящую от системы строку пути, возвращая объект Path, который может использоваться для поиска и доступа к файлу.

  • Метод getPathMatcher используется для создания PathMatcher, который выполняет операции сопоставления с путями.

  • Метод getFileStores возвращает итератор по базовым file-stores.

  • Метод getUserPrincipalLookupService возвращает UserPrincipalLookupService для поиска пользователей или групп по имени.

  • Метод newWatchService создаёт WatchService, который может использоваться для отслеживания изменений и событий в объектах.

Файловые системы сильно различаются. В некоторых случаях файловая система представляет собой единственную иерархию файлов с одним корневым каталогом верхнего уровня. В других случаях она может иметь несколько различных файловых иерархий, каждая со своим корневым каталогом верхнего уровня. Метод getRootDirectories может использоваться для перебора корневых каталогов в файловой системе. Файловая система обычно состоит из одного или нескольких базовых file-stores, которые предоставляют хранилище для файлов. Эти хранилища файлов также могут различаться по поддерживаемым функциям и атрибутам файлов или *метаданным*, которые они связывают с файлами.

Файловая система открыта при создании и может быть закрыта вызовом её метода close. После закрытия любая дальнейшая попытка получить доступ к объектам в файловой системе вызывает ClosedFileSystemException. Файловые системы, созданные по умолчанию provider, закрыть нельзя.

Файловая система может предоставлять чтение-только или чтение-запись доступ к файловой системе. Возможность файловой системы предоставлять доступ только для чтения устанавливается при создании файловой системы и может быть проверена вызовом метода isReadOnly. Попытки записи в хранилища файлов с помощью объекта, связанного с файловой системой только для чтения, вызывают ReadOnlyFileSystemException.

Файловые системы безопасны для использования несколькими потоками. Метод close может быть вызван в любое время для закрытия файловой системы, но является ли файловая система *асинхронно закрываемой*, зависит от поставщика и поэтому не определено. Другими словами, если один поток обращается к объекту в файловой системе, а другой поток вызывает метод close, то может потребоваться ожидание завершения первой операции. Закрытие файловой системы приводит к закрытию всех открытых каналов, служб наблюдения и других объектов closeable, связанных с файловой системой.

С тех пор:
1.7

Конструкторы

Модификатор Конструктор и описание
protected FileSystem()

Инициализирует новый экземпляр этого класса.

Методы

Модификатор и тип Метод и описание
abstract void close()

Закрывает эту файловую систему.

abstract Iterable<FileStore> getFileStores()

Возвращает объект для перебора базовых хранилищ файлов.

abstract Path getPath(String first, String... more)

Преобразует строку пути или последовательность строк, которые при объединении образуют строку пути, в Path.

abstract PathMatcher getPathMatcher(String syntaxAndPattern)

Возвращает PathMatcher, который выполняет операции сопоставления с представлением String объектов Path, интерпретируя заданный шаблон.

abstract Iterable<Path> getRootDirectories()

Возвращает объект для перебора путей корневых каталогов.

abstract String getSeparator()

Возвращает разделитель имен, представленный строкой.

abstract UserPrincipalLookupService getUserPrincipalLookupService()

Возвращает UserPrincipalLookupService для этой файловой системы (необязательная операция).

abstract boolean isOpen()

Указывает, открыта ли эта файловая система.

abstract boolean isReadOnly()

Указывает, разрешает ли эта файловая система доступ только для чтения к своим хранилищам файлов.

abstract WatchService newWatchService()

Создаёт новый WatchService (необязательная операция).

abstract FileSystemProvider provider()

Возвращает поставщика, который создал эту файловую систему.

abstract Set<String> supportedFileAttributeViews()

Возвращает набор имен names представлений атрибутов файлов, поддерживаемых этой FileSystem.

Методы унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

FileSystem

protected FileSystem()

Инициализирует новый экземпляр этого класса.

Методы

provider

public abstract FileSystemProvider provider()

Возвращает провайдер, который создал эту файловую систему.

Возвращает:
Провайдер, который создал эту файловую систему.

close

public abstract void close()
                    throws IOException

Закрывает эту файловую систему.

После закрытия файловой системы все последующие обращения к файловой системе, как методами, определёнными этим классом, так и методами объектов, связанных с этой файловой системой, вызывают исключение ClosedFileSystemException. Если файловая система уже закрыта, вызов этого метода не имеет эффекта.

Закрытие файловой системы закроет все открытые channels, directory-streams, watch-service и другие закрываемые объекты, связанные с этой файловой системой. Файловая система default не может быть закрыта.

Определяет:
close в интерфейсе Closeable
Определяет:
close в интерфейсе AutoCloseable
Выбрасывает:
IOException - Если произошла ошибка ввода-вывода
UnsupportedOperationException - Выбрасывается в случае с системной файловой системой

isOpen

public abstract boolean isOpen()

Указывает, открыта ли эта файловая система.

Файловые системы, созданные стандартным провайдером, всегда открыты.

Возвращает:
true если, и только если, эта файловая система открыта

isReadOnly

public abstract boolean isReadOnly()

Указывает, позволяет ли эта файловая система только чтение для её хранилищ файлов.

Возвращает:
true если, и только если, эта файловая система предоставляет доступ только для чтения

getSeparator

public abstract String getSeparator()

Возвращает разделитель имён, представленный строкой.

Разделитель имён используется для разделения имён в строке пути. Реализация может поддерживать несколько разделителей имён, в этом случае этот метод возвращает реализацию специфичного по умолчанию разделителя имён. Этот разделитель используется при создании строк путей, вызывая метод toString().

В случае с стандартным провайдером этот метод возвращает тот же разделитель, что и File.separator.

Возвращает:
Разделитель имён

getRootDirectories

public abstract Iterable<Path> getRootDirectories()

Возвращает объект для итерации по путям корневых каталогов.

Файловая система обеспечивает доступ к хранилищу файлов, которое может состоять из ряда отдельных иерархий файлов, каждая со своим корневым каталогом верхнего уровня. Если менеджер безопасности не запрещает, каждый элемент в возвращённом итераторе соответствует корневому каталогу отдельной иерархии файлов. Порядок элементов не определён. Иерархии файлов могут меняться во время выполнения виртуальной машины Java. Например, в некоторых реализациях вставка съёмных носителей может привести к созданию новой иерархии файлов с собственным каталогом верхнего уровня.

При установке менеджера безопасности он вызывается для проверки доступа к каждому корневому каталогу. Если доступ запрещён, корневой каталог не возвращается итератором. В случае с стандартным провайдером вызывается метод SecurityManager.checkRead(String) для проверки доступа для чтения к каждому корневому каталогу. Зависит от системы, производятся ли проверки разрешений при получении итератора или во время итерации.

Возвращает:
Объект для итерации по корневым каталогам

getFileStores

public abstract Iterable<FileStore> getFileStores()

Возвращает объект для итерации по базовым хранилищам файлов.

Элементами возвращаемого итератора являются FileStores для этой файловой системы. Порядок элементов не определён, и хранилища файлов могут меняться во время выполнения виртуальной машины Java. При возникновении ошибки ввода-вывода, возможно, из-за недоступности хранилища файлов, оно не возвращается итератором.

В случае со стандартным провайдером, если установлен менеджер безопасности, менеджер безопасности вызывается для проверки RuntimePermission("getFileStoreAttributes"). Если доступ запрещён, хранилища файлов не возвращаются итератором. Кроме того, метод менеджера безопасности SecurityManager.checkRead(String) вызывается для проверки доступа для чтения к верхнему каталогу хранилища файлов. Если доступ запрещён, хранилище файлов не возвращается итератором. Зависит от системы, производятся ли проверки разрешений при получении итератора или во время итерации.

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

for (FileStore store: FileSystems.getDefault().getFileStores()) {
         long total = store.getTotalSpace() / 1024;
         long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024;
         long avail = store.getUsableSpace() / 1024;
         System.out.format("%-20s %12d %12d %12d%n", store, total, used, avail);
     }
Возвращает:
Объект для итерации по хранилищам файлов

supportedFileAttributeViews

public abstract Set<String> supportedFileAttributeViews()

Возвращает набор names представлений атрибутов файлов, поддерживаемых этим FileSystem.

Представление атрибутов файлов BasicFileAttributeView должно поддерживаться, поэтому набор содержит по крайней мере один элемент, "basic".

Метод supportsFileAttributeView(String) может быть использован для проверки, поддерживает ли базовое FileStore атрибуты файлов, идентифицированные представлением атрибута файла.

Возвращает:
Неизменяемый набор имён поддерживаемых представлений атрибутов файлов

getPath

public abstract Path getPath(String first,
                             String... more)

Преобразует строку пути или последовательность строк, которые, при объединении, образуют строку пути, в объект Path. Если more не указывает элементов, то значение параметра first является строкой пути для преобразования. Если more указывает один или более элементов, каждая непустая строка, включая first, рассматривается как последовательность элементов имени (см. Path) и объединяется для формирования строки пути. Подробности о том, как строки объединяются, зависят от поставщика, но обычно они объединяются, используя name-separator в качестве разделителя. Например, если разделитель имён равен "/" и вызывается getPath("/foo","bar","gus"), тогда строка пути "/foo/bar/gus" преобразуется в объект Path. Объект Path, представляющий пустой путь, возвращается, если first является пустой строкой, а more не содержит непустых строк.

Парсинг и преобразование в объект пути по своей сути зависят от реализации. В самом простом случае строка пути отклоняется и выбрасывается InvalidPathException, если строка пути содержит символы, которые не могут быть преобразованы в символы, которые являются допустимыми для хранилища файлов. Например, в системах UNIX символ NUL (\u0000) не допускается в пути. Реализация может выбрать отказ от строк путей, которые содержат имена, длина которых превышает разрешённую для любого хранилища файлов, и где реализация поддерживает сложную синтаксическую конструкцию пути, она может выбрать отклонение строк путей, которые являются неправильно сформированными.

В случае стандартного поставщика строки путей анализируются на основе определения путей на уровне платформы или виртуальной файловой системы. Например, операционная система может не допускать определённых символов в имени файла, но конкретное базовое хранилище файлов может наложить разные или дополнительные ограничения на набор допустимых символов.

Этот метод выбрасывает InvalidPathException, когда строка пути не может быть преобразована. Там, где это возможно и применимо, исключение создаётся со значением index, указывающим первую позицию в параметре path, которая привела к отклонению строки пути.

Параметры:
first - строка пути или начальная часть строки пути
more - дополнительные строки, которые должны быть объединены для формирования строки пути
Возвращает:
результирующий объект Path
Выбрасывает:
InvalidPathException - Если строка пути не может быть преобразована

getPathMatcher

public abstract PathMatcher getPathMatcher(String syntaxAndPattern)

Возвращает PathMatcher, выполняющий операции сопоставления с представлением String объектов Path путём интерпретации заданного шаблона. Параметр syntaxAndPattern определяет синтаксис и шаблон и имеет вид:

syntax:pattern
, где ':' представляет само себя.

Реализация FileSystem поддерживает синтаксисы «glob» и «regex», а также может поддерживать другие. Значение компонента синтаксиса сравнивается без учёта регистра.

Когда синтаксис равен «glob», представление пути сопоставляется с помощью ограниченного языка шаблонов, напоминающего регулярные выражения, но с более простым синтаксисом. Например:

*.java Сопоставляет путь, представляющий имя файла, заканчивающееся на .java
*.* Сопоставляет имена файлов, содержащие точку
*.{java,class} Сопоставляет имена файлов, заканчивающиеся на .java или .class
foo.? Сопоставляет имена файлов, начинающиеся с foo. и имеющие односимвольное расширение
/home/*/* Сопоставляет /home/gus/data на платформах UNIX
/home/** Сопоставляет /home/gus и /home/gus/data на платформах UNIX
C:\\* Сопоставляет C:\foo и C:\bar на платформе Windows (обратите внимание, что обратный слэш экранирован; в качестве строковой литералы в языке Java шаблон будет "C:\\\\*")

Следующие правила используются для интерпретации шаблонов glob:

  • Символ * сопоставляет ноль или более characters компонентов имени name без пересечения границ каталогов.

  • Символы ** сопоставляют ноль или более characters компонентов имени, пересекая границы каталогов.

  • Символ ? сопоставляет ровно один символ компонента имени.

  • Символ обратного слэша (\ ) используется для экранирования символов, которые в противном случае интерпретировались бы как специальные символы. Выражение \\ сопоставляет одиночный обратный слэш, а «\{" — левую фигурную скобку, например.

  • Символы [ ] являются выражением в квадратных скобках, которое сопоставляет один символ компонента имени из набора символов. Например, [abc] сопоставляет "a", "b", или "c". Тире (-) может быть использовано для указания диапазона, так [a-z] задаёт диапазон, который сопоставляет от "a" до "z" (включительно). Эти формы могут быть смешаны, поэтому [abce-g] сопоставляет "a", "b", "c", "e", "f" или "g". Если символ после [ является «^», то он используется для отрицания, поэтому [!a-c] сопоставляет любой символ, кроме "a", "b", или "c" .

    Внутри выражения в квадратных скобках символы *, ? и \ сопоставляют сами себя. Символ (-) сопоставляет сам себя, если это первый символ в квадратных скобках или первый символ после «^», если происходит отрицание.

  • Символы { } представляют собой группу подшаблонов, где группа сопоставляется, если сопоставляется любой подшаблон в группе. Символ "," используется для разделения подшаблонов. Группировка не может быть вложенной.

  • Ведущие символы точки / в именах файлов обрабатываются как обычные символы в операциях сопоставления. Например, шаблон glob "*" соответствует имени файла ".login". Метод Files.isHidden(java.nio.file.Path) можно использовать для проверки того, является ли файл скрытым.

  • Все остальные символы сопоставляют сами себя, в зависимости от реализации. Это включает в себя символы, представляющие любой name-separators.

  • Сопоставление компонентов root сильно зависит от реализации и не определено.

Если синтаксис равен «regex», то компонент шаблона является регулярным выражением, как определено классом Pattern.

Для обоих синтаксисов glob и regex, такие детали сопоставления, как чувствительность к регистру, зависят от реализации и поэтому не определены.

Параметры:
syntaxAndPattern - Синтаксис и шаблон
Возвращает:
Сопоставитель путей, который может быть использован для сопоставления путей с шаблоном
Исключения:
IllegalArgumentException - Если параметр не имеет формы: syntax:pattern
PatternSyntaxException - Если шаблон некорректен
UnsupportedOperationException - Если синтаксис шаблона неизвестен реализации
См. также:
Files.newDirectoryStream(Path,String)

getUserPrincipalLookupService

public abstract UserPrincipalLookupService getUserPrincipalLookupService()

Возвращает службу поиска UserPrincipalLookupService для этой файловой системы (необязательная операция). Результирующая служба может использоваться для поиска имён пользователей или групп.

Пример использования: Предположим, мы хотим сделать "joe" владельцем файла:

UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService();
     Files.setOwner(path, lookupService.lookupPrincipalByName("joe"));
Возвращает:
Службу поиска UserPrincipalLookupService для этой файловой системы
Исключения:
UnsupportedOperationException - Если у этой FileSystem нет службы поиска

newWatchService

public abstract WatchService newWatchService()
                                      throws IOException

Создаёт новый WatchService (необязательная операция).

Этот метод создаёт новую службу мониторинга, которая может использоваться для отслеживания зарегистрированных объектов на предмет изменений и событий.

Возвращает:
новую службу мониторинга
Исключения:
UnsupportedOperationException - Если эта FileSystem не поддерживает отслеживание объектов файловой системы на предмет изменений и событий. Это исключение не выбрасывается службой FileSystems , созданной по умолчанию.
IOException - Если произошла ошибка ввода-вывода

© 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.

Spec-Zone.ru

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