Spec-Zone.ru › OpenJDK 21

Класс 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

Краткое описание конструкторов

FileSystem()
Модификатор Конструктор Описание
protected
Инициализирует новый экземпляр этого класса.

Краткое описание методов

Модификатор и тип Метод Описание
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 в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Исключения:
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", то String представления пути сопоставляются с использованием ограниченного языка шаблонов, который напоминает регулярные выражения, но имеет более простой синтаксис. Например:

Язык шаблонов
Пример Описание
*.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, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/FileSystem.html

Spec-Zone.ru

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