Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.

Подробное описание конструкторов

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()
Возвращает объект для перебора путей корневых каталогов.

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

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

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, 2026, 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.

Spec-Zone.ru

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