Spec-Zone.ru › OpenJDK 25

Класс 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 по умолчанию, закрыть нельзя.

FileSystem может предоставлять доступ к файловой системе только для чтения или для чтения и записи. Доступна ли файловая система только для чтения, определяется при создании FileSystem и может быть проверено вызовом метода 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.

Методы, объявленные в классе 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. Например, в некоторых реализациях подключение съемного носителя может привести к созданию новой иерархии файлов с собственным каталогом верхнего уровня. Доступность корневого каталога не гарантируется.

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

getFileStores

public abstract Iterable<FileStore> getFileStores()
Возвращает объект для перебора базовых файловых хранилищ.

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

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

    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. Если first — пустая строка, а more не содержит непустых строк, возвращается Path, представляющий пустой путь.

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

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

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

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

getPathMatcher

public abstract PathMatcher getPathMatcher(String syntaxAndPattern)
Возвращает PathMatcher, выполняющий сопоставление с String представлением объектов Path на основе заданного шаблона. Параметр syntaxAndPattern определяет синтаксис и шаблон и имеет вид:
syntax:pattern
где 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(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 — если возникает ошибка ввода-вывода

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/nio/file/FileSystem.html

Spec-Zone.ru

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