Класс 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
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
close() |
Закрывает эту файловую систему. |
abstract Iterable |
getFileStores() |
Возвращает объект для перебора базовых хранилищ файлов. |
abstract Path |
getPath |
Преобразует строку пути или последовательность строк, которые при объединении образуют строку пути, в объект Path. |
abstract PathMatcher |
getPathMatcher |
Возвращает объект PathMatcher, выполняющий сопоставление с представлением String объектов Path на основе заданного шаблона. |
abstract Iterable |
getRootDirectories() |
Возвращает объект для перебора путей корневых каталогов. |
abstract String |
getSeparator() |
Возвращает разделитель имен в виде строки. |
abstract UserPrincipalLookupService |
getUserPrincipalLookupService() |
Возвращает UserPrincipalLookupService для этой файловой системы (необязательная операция). |
abstract boolean |
isOpen() |
Проверяет, открыта ли эта файловая система. |
abstract boolean |
isReadOnly() |
Проверяет, предоставляет ли эта файловая система для своих хранилищ файлов только доступ для чтения. |
abstract WatchService |
newWatchService() |
Создает новый объект WatchService (необязательная операция). |
abstract FileSystemProvider |
provider() |
Возвращает поставщика, создавшего эту файловую систему. |
abstract Set |
supportedFileAttributeViews() |
Возвращает набор names представлений файловых атрибутов, поддерживаемых этой FileSystem. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени. |
final void |
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()
Файловая система предоставляет доступ к хранилищу файлов, которое может состоять из нескольких отдельных иерархий файлов, каждая со своим корневым каталогом верхнего уровня. Каждый элемент возвращенного итератора соответствует корневому каталогу отдельной иерархии файлов. Порядок элементов не определен. Иерархии файлов могут изменяться в течение срока работы виртуальной машины 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— если синтаксис шаблона неизвестен реализации - См. также:
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, 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.