Класс Files
public final class Files extends Object
В большинстве случаев методы, определённые здесь, делегируют выполнение файловых операций соответствующему поставщику файловой системы.
- Начиная с версии:
- 1.7
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static long |
copy |
Копирует все байты из входного потока в файл. |
static long |
copy |
Копирует все байты из файла в выходной поток. |
static Path |
copy |
Копирует файл в целевой файл. |
static Path |
createDirectories |
Создаёт каталог, предварительно создав все отсутствующие родительские каталоги. |
static Path |
createDirectory |
Создаёт новый каталог; операция завершается ошибкой, если dir указывает на существующий файл. |
static Path |
createFile |
Создаёт новый пустой файл; операция завершается ошибкой, если path указывает на существующий файл. |
static Path |
createLink |
Создаёт новую ссылку (запись каталога) на существующий файл; операция завершается ошибкой, если link указывает на существующий файл (необязательная операция). |
static Path |
createSymbolicLink |
Создаёт символическую ссылку на целевой объект; операция завершается ошибкой, если link указывает на существующий файл (необязательная операция). |
static Path |
createTempDirectory |
Создаёт новый каталог в каталоге для временных файлов по умолчанию, используя заданный префикс для формирования имени. |
static Path |
createTempDirectory |
Создаёт новый каталог в указанном каталоге, используя заданный префикс для формирования имени. |
static Path |
createTempFile |
Создаёт пустой файл в каталоге для временных файлов по умолчанию, используя заданные префикс и суффикс для формирования имени. |
static Path |
createTempFile |
Создаёт новый пустой файл в указанном каталоге, используя заданные строки префикса и суффикса для формирования имени. |
static void |
delete |
Удаляет файл. |
static boolean |
deleteIfExists |
Удаляет файл, если он существует. |
static boolean |
exists |
Проверяет, существует ли файл. |
static Stream |
find |
Возвращает Stream, который заполняется
Path по мере поиска файлов в дереве файлов, корнем которого является заданный исходный файл. |
static Object |
getAttribute |
Читает значение атрибута файла. |
static <V extends FileAttributeView> |
getFileAttributeView |
Возвращает представление атрибутов файла указанного типа. |
static FileStore |
getFileStore |
Возвращает FileStore, представляющее хранилище файлов, в котором находится файл. |
static FileTime |
getLastModifiedTime |
Возвращает время последнего изменения файла. |
static UserPrincipal |
getOwner |
Возвращает владельца файла. |
static Set |
getPosixFilePermissions |
Возвращает разрешения POSIX для файла. |
static boolean |
isDirectory |
Проверяет, является ли файл каталогом. |
static boolean |
isExecutable |
Проверяет, является ли файл исполняемым. |
static boolean |
isHidden |
Определяет, считается ли файл скрытым. |
static boolean |
isReadable |
Проверяет, доступен ли файл для чтения. |
static boolean |
isRegularFile |
Проверяет, является ли файл обычным файлом с непрозрачным содержимым. |
static boolean |
isSameFile |
Проверяет, указывают ли два пути на один и тот же файл. |
static boolean |
isSymbolicLink |
Проверяет, является ли файл символической ссылкой. |
static boolean |
isWritable |
Проверяет, доступен ли файл для записи. |
static Stream |
lines |
Читает все строки из файла в виде Stream. |
static Stream |
lines |
Читает все строки из файла в виде Stream. |
static Stream |
list |
Возвращает Stream, которая заполняется по мере чтения; её элементы — записи каталога. |
static long |
mismatch |
Находит и возвращает позицию первого несовпадающего байта в содержимом двух файлов или -1L, если несовпадений нет. |
static Path |
move |
Перемещает или переименовывает файл в целевой файл. |
static BufferedReader |
newBufferedReader |
Открывает файл для чтения и возвращает BufferedReader для эффективного чтения текста из файла. |
static BufferedReader |
newBufferedReader |
Открывает файл для чтения и возвращает BufferedReader, который можно использовать для эффективного чтения текста из файла. |
static BufferedWriter |
newBufferedWriter |
Открывает файл для записи или создаёт его и возвращает BufferedWriter, который можно использовать для эффективной записи текста в файл. |
static BufferedWriter |
newBufferedWriter |
Открывает файл для записи или создаёт его и возвращает BufferedWriter для эффективной записи текста в файл. |
static SeekableByteChannel |
newByteChannel |
Открывает файл или создаёт его и возвращает канал байтов с поддержкой позиционирования для доступа к файлу. |
static SeekableByteChannel |
newByteChannel |
Открывает файл или создаёт его и возвращает канал байтов с поддержкой позиционирования для доступа к файлу. |
static DirectoryStream |
newDirectoryStream |
Открывает каталог и возвращает DirectoryStream для перебора всех записей каталога. |
static DirectoryStream |
newDirectoryStream |
Открывает каталог и возвращает DirectoryStream для перебора записей каталога. |
static DirectoryStream |
newDirectoryStream |
Открывает каталог и возвращает DirectoryStream для перебора записей каталога. |
static InputStream |
newInputStream |
Открывает файл и возвращает входной поток для чтения из файла. |
static OutputStream |
newOutputStream |
Открывает файл или создаёт его и возвращает выходной поток, который можно использовать для записи байтов в файл. |
static boolean |
notExists |
Проверяет, что файл, на который указывает этот путь, не существует. |
static String |
probeContentType |
Определяет тип содержимого файла. |
static byte[] |
readAllBytes |
Считывает все байты из файла. |
static List |
readAllLines |
Читает все строки из файла. |
static List |
readAllLines |
Читает все строки из файла. |
static <A extends BasicFileAttributes> |
readAttributes |
Считывает атрибуты файла одной операцией. |
static Map |
readAttributes |
Считывает набор атрибутов файла одной операцией. |
static String |
readString |
|
static String |
readString |
Считывает все символы из файла в строку, декодируя байты в символы с использованием указанной кодировки символов. |
static Path |
readSymbolicLink |
Читает цель символической ссылки (необязательная операция). |
static Path |
setAttribute |
Задаёт значение атрибута файла. |
static Path |
setLastModifiedTime |
Обновляет атрибут времени последнего изменения файла. |
static Path |
setOwner |
Обновляет владельца файла. |
static Path |
setPosixFilePermissions |
Задаёт разрешения POSIX для файла. |
static long |
size |
Возвращает размер файла (в байтах). |
static Stream |
walk |
Возвращает Stream, который заполняется
Path по мере обхода дерева файлов, корнем которого является заданный исходный файл. |
static Stream |
walk |
Возвращает Stream, который заполняется
Path по мере обхода дерева файлов, корнем которого является заданный исходный файл. |
static Path |
walkFileTree |
Обходит дерево файлов. |
static Path |
walkFileTree |
Обходит дерево файлов. |
static Path |
write |
Записывает байты в файл. |
static Path |
write |
Записывает строки текста в файл. |
static Path |
write |
Записывает строки текста в файл. |
static Path |
writeString |
Записывает CharSequence в файл. |
static Path |
writeString |
Записывает CharSequence в файл. |
Методы, объявленные в классе 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() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание методов
newInputStream
public static InputStream newInputStream(Path path, OpenOption... options) throws IOException
mark или reset. Поток будет безопасен для доступа из нескольких параллельно работающих потоков. Чтение начинается с начала файла. Возможность асинхронного закрытия и/или прерывания возвращаемого потока в значительной степени зависит от поставщика файловой системы и поэтому не определена. Параметр options определяет способ открытия файла. Если параметры не указаны, это эквивалентно открытию файла с параметром READ. Помимо параметра
READ реализация может также поддерживать дополнительные параметры, специфичные для реализации.
- Параметры:
-
path— путь к открываемому файлу -
options— параметры, определяющие способ открытия файла - Возвращает:
- новый входной поток
- Выбрасывает:
-
IllegalArgumentException— если указано недопустимое сочетание параметров -
UnsupportedOperationException— если указан неподдерживаемый параметр -
IOException— если произошла ошибка ввода-вывода
newOutputStream
public static OutputStream newOutputStream(Path path, OpenOption... options) throws IOException
Этот метод открывает или создает файл точно так же, как указано в методе newByteChannel, за исключением того, что массив параметров не может содержать параметр READ. Если параметры не указаны, метод работает так, как если бы были указаны параметры CREATE, TRUNCATE_EXISTING и WRITE. Иными словами, файл открывается для записи; если файл не существует, он создается, а если существует — сначала усекается до размера 0, при условии что он является regular-file.
Примеры использования:
Path path = ...
// truncate and overwrite an existing file, or create the file if
// it doesn't initially exist
OutputStream out = Files.newOutputStream(path);
// append to an existing file, fail if the file does not exist
out = Files.newOutputStream(path, APPEND);
// append to an existing file, create file if it doesn't initially exist
out = Files.newOutputStream(path, CREATE, APPEND);
// always create new file, failing if it already exists
out = Files.newOutputStream(path, CREATE_NEW);
- Параметры:
-
path— путь к открываемому или создаваемому файлу -
options— параметры, определяющие способ открытия файла - Возвращает:
- новый выходной поток
- Выбрасывает:
-
IllegalArgumentException— еслиoptionsсодержит недопустимое сочетание параметров -
UnsupportedOperationException— если указан неподдерживаемый параметр -
FileAlreadyExistsException— если путь указывает на существующий файл и указан параметрCREATE_NEW(необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода
newByteChannel
public static SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
Параметр options определяет способ открытия файла. Параметры READ и WRITE определяют, следует ли открыть файл для чтения и/или записи. Если ни один из этих параметров (или параметр APPEND) не указан, файл открывается для чтения. По умолчанию чтение или запись начинаются с начала файла.
Помимо READ и WRITE, можно указать следующие параметры:
| Параметр | Описание |
|---|---|
APPEND | Если указан этот параметр, файл открывается для записи, и при каждом вызове метода write канала позиция сначала перемещается в конец файла, после чего записываются запрошенные данные. Выполняются ли перемещение позиции и запись данных одной атомарной операцией, зависит от системы и поэтому не определено. Этот параметр нельзя использовать вместе с параметрами READ или TRUNCATE_EXISTING. |
TRUNCATE_EXISTING | Если указан этот параметр, существующий файл усекается до размера 0 байт. Этот параметр игнорируется, если файл открыт только для чтения. |
CREATE_NEW | Если указан этот параметр, создается новый файл; операция завершается ошибкой, если файл уже существует или является символической ссылкой. При создании файла проверка его существования и создание файла, если он не существует, выполняются атомарно относительно других операций файловой системы. Этот параметр игнорируется, если файл открыт только для чтения. |
CREATE | Если указан этот параметр, существующий файл открывается, а если он не существует — создается новый. Этот параметр игнорируется, если также указан параметр CREATE_NEW или файл открыт только для чтения. |
DELETE_ON_CLOSE | Если указан этот параметр, реализация предпринимает все возможные меры, чтобы удалить файл при его закрытии методом close. Если метод close не вызывается, все возможные меры предпринимаются для удаления файла при завершении работы виртуальной машины Java. |
SPARSE | При создании нового файла этот параметр служит подсказкой, что файл будет разреженным. Если новый файл не создается, параметр игнорируется. |
SYNC | Требует, чтобы каждое обновление содержимого или метаданных файла синхронно записывалось на базовое устройство хранения (см. целостность файлов при синхронном вводе-выводе). |
DSYNC | Требует, чтобы каждое обновление содержимого файла синхронно записывалось на базовое устройство хранения (см. целостность файлов при синхронном вводе-выводе). |
Реализация может также поддерживать дополнительные параметры, специфичные для реализации.
Параметр attrs — это необязательный список file-attributes, которые нужно задать атомарно при создании нового файла.
В случае поставщика по умолчанию возвращаемый байтовый канал с произвольным доступом является объектом FileChannel.
Примеры использования:
Path path = ...
// open file for reading
ReadableByteChannel rbc = Files.newByteChannel(path, EnumSet.of(READ)));
// open file for writing to the end of an existing file, creating
// the file if it doesn't already exist
WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND));
// create file with initial permissions, opening it for both reading and writing
FileAttribute<Set<PosixFilePermission>> perms = ...
SeekableByteChannel sbc =
Files.newByteChannel(path, EnumSet.of(CREATE_NEW,READ,WRITE), perms);
- Параметры:
-
path— путь к открываемому или создаваемому файлу -
options— параметры, определяющие способ открытия файла -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании файла - Возвращает:
- новый байтовый канал с произвольным доступом
- Выбрасывает:
-
IllegalArgumentException— если набор содержит недопустимое сочетание параметров -
UnsupportedOperationException— если указан неподдерживаемый параметр открытия или массив содержит атрибуты, которые нельзя задать атомарно при создании файла -
FileAlreadyExistsException— если путь указывает на существующий файл, указан параметрCREATE_NEWи файл открывается для записи (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода - См. также:
newByteChannel
public static SeekableByteChannel newByteChannel(Path path, OpenOption... options) throws IOException
Этот метод открывает или создает файл точно так же, как указано в методе newByteChannel.
- Параметры:
-
path— путь к открываемому или создаваемому файлу -
options— параметры, определяющие способ открытия файла - Возвращает:
- новый байтовый канал с произвольным доступом
- Выбрасывает:
-
IllegalArgumentException— если набор содержит недопустимое сочетание параметров -
UnsupportedOperationException— если указан неподдерживаемый параметр открытия -
FileAlreadyExistsException— если путь указывает на существующий файл, указан параметрCREATE_NEWи файл открывается для записи (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода - См. также:
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
DirectoryStream для перебора всех записей каталога. Элементы, возвращаемые методом iterator потока каталога, имеют тип
Path; каждый из них представляет запись в каталоге. Объекты Path получаются так, как если бы имя записи каталога разрешалось относительно dir с помощью resolving. Если конструкция try-with-resources не используется, после завершения перебора следует вызвать метод close потока каталога, чтобы освободить ресурсы, занятые открытым каталогом.
Если реализация поддерживает операции над записями каталога, выполняемые без гонок, возвращаемый поток каталога является SecureDirectoryStream.
- Параметры:
-
dir— путь к каталогу - Возвращает:
- новый открытый объект
DirectoryStream - Выбрасывает:
-
NotDirectoryException— если файл не удалось открыть по другой причине, поскольку он не является каталогом (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir, String glob) throws IOException
DirectoryStream для перебора записей каталога. Элементы, возвращаемые методом iterator потока каталога, имеют тип
Path; каждый из них представляет запись в каталоге. Объекты Path получаются так, как если бы имя записи каталога разрешалось относительно dir с помощью resolving. Записи, возвращаемые итератором, фильтруются путем сопоставления представления String их имен файлов с заданным шаблоном glob. Например, предположим, что мы хотим перебрать файлы в каталоге, имена которых заканчиваются на ".java":
Path dir = ...
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.java")) {
:
}
Шаблон glob задается методом getPathMatcher.
Если конструкция try-with-resources не используется, после завершения перебора следует вызвать метод close потока каталога, чтобы освободить ресурсы, занятые открытым каталогом.
Если реализация поддерживает операции над записями каталога, выполняемые без гонок, возвращаемый поток каталога является SecureDirectoryStream.
- Параметры:
-
dir— путь к каталогу -
glob— шаблон glob - Возвращает:
- новый открытый объект
DirectoryStream - Выбрасывает:
-
PatternSyntaxException— если шаблон недопустим -
NotDirectoryException— если файл не удалось открыть по другой причине, поскольку он не является каталогом (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
DirectoryStream для перебора записей каталога. Элементы, возвращаемые методом iterator потока каталога, имеют тип
Path; каждый из них представляет запись в каталоге. Объекты Path получаются так, как если бы имя записи каталога разрешалось относительно dir с помощью resolving. Записи, возвращаемые итератором, фильтруются заданным filter. Если конструкция try-with-resources не используется, после завершения перебора следует вызвать метод close потока каталога, чтобы освободить ресурсы, занятые открытым каталогом.
Если фильтр завершается из-за неперехваченной ошибки или исключения времени выполнения, это исключение передается методу hasNext или next. Если выбрасывается
IOException, метод hasNext или
next выбрасывает DirectoryIteratorException, причиной которого является IOException.
Если реализация поддерживает операции над записями каталога, выполняемые без гонок, возвращаемый поток каталога является SecureDirectoryStream.
Пример использования: предположим, что мы хотим перебрать файлы в каталоге, размер которых превышает 8 КБ.
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
public boolean accept(Path file) throws IOException {
return (Files.size(file) > 8192L);
}
};
Path dir = ...
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
:
}
- Параметры:
-
dir— путь к каталогу -
filter— фильтр потока каталога - Возвращает:
- новый открытый объект
DirectoryStream - Выбрасывает:
-
NotDirectoryException— если файл не удалось открыть по другой причине, поскольку он не является каталогом (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода
createFile
public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException
path указывает на существующий файл. Проверка существования файла и создание нового файла, если он не существует, выполняются одной операцией, атомарной относительно всех остальных действий в файловой системе, которые могут повлиять на каталог. Параметр attrs — это необязательный список file-attributes, которые нужно задать атомарно при создании файла. Каждый атрибут определяется своим name. Если в массиве указано несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
- Параметры:
-
path— путь к создаваемому файлу -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании файла - Возвращает:
- файл
- Выбрасывает:
-
UnsupportedOperationException— если массив содержит атрибут, который нельзя задать атомарно при создании файла -
FileAlreadyExistsException— еслиpathуказывает на существующий файл (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода или родительский каталог не существует
createDirectory
public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
dir указывает на существующий файл. Проверка существования файла и создание каталога, если он не существует, выполняются одной операцией, атомарной относительно всех остальных действий в файловой системе, которые могут повлиять на каталог. Если сначала необходимо создать все отсутствующие родительские каталоги, следует использовать метод createDirectories. Параметр attrs — это необязательный список file-attributes, которые нужно задать атомарно при создании каталога. Каждый атрибут определяется своим name. Если в массиве указано несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
- Параметры:
-
dir— создаваемый каталог -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании каталога - Возвращает:
- каталог
- Выбрасывает:
-
UnsupportedOperationException— если массив содержит атрибут, который нельзя задать атомарно при создании каталога -
FileAlreadyExistsException— еслиdirуказывает на существующий файл (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода или родительский каталог не существует
createDirectories
public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException
createDirectory, исключение не выбрасывается, если каталог не удалось создать, поскольку он уже существует. Параметр attrs — это необязательный список file-attributes, которые нужно задать атомарно при создании отсутствующих каталогов. Каждый атрибут файла определяется своим name. Если в массиве указано несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
Если этот метод завершается ошибкой, она может возникнуть после создания некоторых, но не всех родительских каталогов.
- Параметры:
-
dir— создаваемый каталог -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании каталога - Возвращает:
- каталог
- Выбрасывает:
-
UnsupportedOperationException— если массив содержит атрибут, который нельзя задать атомарно при создании каталога -
FileAlreadyExistsException— еслиdirуказывает на существующий файл, который не является каталогом (необязательное конкретное исключение) -
IOException— если произошла ошибка ввода-вывода
createTempFile
public static Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs) throws IOException
Path связан с тем же FileSystem, что и указанный каталог. Способ формирования имени файла зависит от реализации и поэтому не определен. Когда это возможно, prefix и suffix используются для создания возможных имен так же, как в методе File.createTempFile(String,String,File).
Как и методы File.createTempFile, этот метод является лишь частью механизма работы с временными файлами. Если полученный файл используется как рабочий файл, его можно открыть с параметром DELETE_ON_CLOSE, чтобы файл удалялся при вызове соответствующего метода close. Кроме того, для автоматического удаления файла можно использовать shutdown-hook или механизм File.deleteOnExit().
Параметр attrs — это необязательный список file-attributes, которые нужно задать атомарно при создании файла. Каждый атрибут определяется своим name. Если в массиве указано несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются. Если атрибуты файла не указаны, созданный файл может иметь более строгие разрешения доступа, чем файлы, созданные методом File.createTempFile(String,String,File).
- Параметры:
-
dir— путь к каталогу, в котором нужно создать файл -
prefix— строка префикса для формирования имени файла; может бытьnull -
suffix— строка суффикса для формирования имени файла; может бытьnull, в этом случае используется ".tmp" -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании файла - Возвращает:
- путь к созданному файлу, который не существовал до вызова этого метода
- Выбрасывает:
-
IllegalArgumentException— если параметры префикса или суффикса нельзя использовать для формирования возможного имени файла -
UnsupportedOperationException— если массив содержит атрибут, который нельзя задать атомарно при создании каталога -
IOException— если произошла ошибка ввода-вывода илиdirне существует
createTempFile
public static Path createTempFile(String prefix, String suffix, FileAttribute<?>... attrs) throws IOException
Path связан с FileSystem по умолчанию. Этот метод работает точно так, как указано в методе createTempFile(Path,String,String,FileAttribute[]), если параметром dir является каталог временных файлов.
- Параметры:
-
prefix— строка префикса для формирования имени файла; может бытьnull -
suffix— строка суффикса для формирования имени файла; может бытьnull, в этом случае используется ".tmp" -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании файла - Возвращает:
- путь к созданному файлу, который не существовал до вызова этого метода
- Выбрасывает:
-
IllegalArgumentException— если параметры префикса или суффикса нельзя использовать для формирования возможного имени файла -
UnsupportedOperationException— если массив содержит атрибут, который нельзя задать атомарно при создании каталога -
IOException— если произошла ошибка ввода-вывода или каталог временных файлов не существует
createTempDirectory
public static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs) throws IOException
Path связан с тем же FileSystem, что и указанный каталог. Способ формирования имени каталога зависит от реализации и поэтому не определен. Когда это возможно, prefix используется для создания возможных имен.
Как и методы createTempFile, этот метод является лишь частью механизма работы с временными файлами. Для автоматического удаления каталога можно использовать shutdown-hook или механизм File.deleteOnExit().
Параметр attrs — это необязательный список file-attributes, которые нужно задать атомарно при создании каталога. Каждый атрибут определяется своим name. Если в массиве указано несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются. Если атрибуты файла не указаны, созданный каталог может иметь более строгие разрешения доступа, чем каталоги, созданные методом createDirectory(Path, FileAttribute<?>...).
- Параметры:
-
dir— путь к каталогу, в котором нужно создать каталог -
prefix— строка префикса для формирования имени каталога; может бытьnull -
attrs— необязательный список атрибутов файла, которые нужно задать атомарно при создании каталога - Возвращает:
- путь к созданному каталогу, который не существовал до вызова этого метода
- Выбрасывает:
-
IllegalArgumentException— если префикс нельзя использовать для формирования возможного имени каталога -
UnsupportedOperationException— если массив содержит атрибут, который нельзя задать атомарно при создании каталога -
IOException— если произошла ошибка ввода-вывода илиdirне существует
createTempDirectory
public static Path createTempDirectory(String prefix, FileAttribute<?>... attrs) throws IOException
Path связывается с FileSystem по умолчанию. Этот метод работает точно так, как указано в методе createTempDirectory(Path,String,FileAttribute[]), если параметр dir представляет собой каталог временных файлов.
- Параметры:
-
prefix- строка префикса, используемая при формировании имени каталога; может бытьnull -
attrs- необязательный список атрибутов файла, которые следует атомарно задать при создании каталога - Возвращает:
- путь к вновь созданному каталогу, который не существовал до вызова этого метода
- Исключения:
-
IllegalArgumentException- если префикс нельзя использовать для формирования имени предполагаемого каталога -
UnsupportedOperationException- если массив содержит атрибут, который нельзя атомарно задать при создании каталога -
IOException- если произошла ошибка ввода-вывода или каталог временных файлов не существует
createSymbolicLink
public static Path createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs) throws IOException
link указывает на существующий файл (необязательная операция). Параметр target задает цель ссылки. Это может быть absolute или относительный путь; целевой объект может не существовать. Если целевой путь относительный, операции файловой системы над созданной ссылкой выполняются относительно пути самой ссылки.
Параметр attrs задает необязательные attributes, которые следует атомарно задать при создании ссылки. Каждый атрибут идентифицируется по его name. Если массив содержит несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
Если символические ссылки поддерживаются, но базовое хранилище FileStore не поддерживает символические ссылки, операция может завершиться ошибкой IOException. Кроме того, в некоторых операционных системах для создания символических ссылок может потребоваться запуск виртуальной машины Java с зависящими от реализации привилегиями; в этом случае данный метод может выбросить IOException.
- Параметры:
-
link- путь создаваемой символической ссылки -
target- цель символической ссылки -
attrs- массив атрибутов, которые следует атомарно задать при создании символической ссылки - Возвращает:
- путь к символической ссылке
- Исключения:
-
UnsupportedOperationException- если реализация не поддерживает символические ссылки или массив содержит атрибут, который нельзя атомарно задать при создании символической ссылки -
FileAlreadyExistsException- еслиlinkуказывает на существующий файл (необязательное конкретное исключение) -
IOException- если произошла ошибка ввода-вывода
createLink
public static Path createLink(Path link, Path existing) throws IOException
link указывает на существующий файл (необязательная операция). Параметр link указывает место, где следует создать запись каталога. Параметр existing задает путь к существующему файлу. Этот метод создает для файла новую запись каталога, чтобы к нему можно было обращаться по пути link. В некоторых файловых системах это называется созданием «жесткой ссылки». Если параметр existing задает путь к символической ссылке, то то, будет ли новая ссылка указывать на цель символической ссылки или на саму символическую ссылку, зависит от платформы и поэтому не определено. Вопрос о том, сохраняются ли атрибуты файла для самого файла или для каждой записи каталога, зависит от файловой системы и поэтому не определен. Как правило, файловая система требует, чтобы все ссылки (записи каталогов) на файл находились в одной файловой системе. Кроме того, на некоторых платформах для создания жестких ссылок или ссылок на каталоги может потребоваться запуск виртуальной машины Java с зависящими от реализации привилегиями.
- Параметры:
-
link- создаваемая ссылка (запись каталога) -
existing- путь к существующему файлу - Возвращает:
- путь к ссылке (записи каталога)
- Исключения:
-
UnsupportedOperationException- если реализация не поддерживает добавление существующего файла в каталог -
FileAlreadyExistsException- еслиlinkуказывает на существующий файл (необязательное конкретное исключение) -
IOException- если произошла ошибка ввода-вывода
delete
public static void delete(Path path) throws IOException
Реализации может потребоваться проверить файл, чтобы определить, является ли он каталогом. Поэтому этот метод может быть неатомарным относительно других операций файловой системы. Если файл является символической ссылкой, удаляется сама символическая ссылка, а не ее конечная цель.
Если файл является каталогом, каталог должен быть пустым. В некоторых реализациях каталог содержит записи для специальных файлов или ссылок, создаваемых при создании каталога. В таких реализациях каталог считается пустым, если в нем есть только специальные записи. Этот метод можно использовать вместе с методом walkFileTree для удаления каталога и всех его записей или, при необходимости, всего дерева файлов.
В некоторых операционных системах удалить файл может быть невозможно, если он открыт и используется этой виртуальной машиной Java или другими программами.
- Параметры:
-
path- путь к удаляемому файлу - Исключения:
-
NoSuchFileException- если файл не существует (необязательное конкретное исключение) -
DirectoryNotEmptyException- если файл является каталогом и его не удалось удалить, поскольку каталог не пуст (необязательное конкретное исключение) -
IOException- если произошла ошибка ввода-вывода
deleteIfExists
public static boolean deleteIfExists(Path path) throws IOException
Как и в случае с методом delete(Path), реализации может потребоваться проверить файл, чтобы определить, является ли он каталогом. Поэтому этот метод может быть неатомарным относительно других операций файловой системы. Если файл является символической ссылкой, удаляется сама символическая ссылка, а не ее конечная цель.
Если файл является каталогом, каталог должен быть пустым. В некоторых реализациях каталог содержит записи для специальных файлов или ссылок, создаваемых при создании каталога. В таких реализациях каталог считается пустым, если в нем есть только специальные записи.
В некоторых операционных системах удалить файл может быть невозможно, если он открыт и используется этой виртуальной машиной Java или другими программами.
- Параметры:
-
path- путь к удаляемому файлу - Возвращает:
-
true, если файл был удален этим методом;false, если файл не удалось удалить, поскольку он не существовал - Исключения:
-
DirectoryNotEmptyException- если файл является каталогом и его не удалось удалить, поскольку каталог не пуст (необязательное конкретное исключение) -
IOException- если произошла ошибка ввода-вывода
copy
public static Path copy(Path source, Path target, CopyOption... options) throws IOException
Этот метод копирует файл в целевой файл; параметр
options задает способ копирования. По умолчанию копирование завершается ошибкой, если целевой файл уже существует или является символической ссылкой, за исключением случая, когда источник и цель — один и тот же файл (same): в этом случае метод завершается без копирования файла. Копирование атрибутов файла в целевой файл не является обязательным. Если символические ссылки поддерживаются и файл является символической ссылкой, копируется конечная цель ссылки. Если файл является каталогом, в целевом расположении создается пустой каталог (записи каталога не копируются). Этот метод можно использовать вместе с методом walkFileTree для копирования каталога и всех его записей или, при необходимости, всего дерева файлов.
Параметр options может содержать любой из следующих параметров:
| Параметр | Описание |
|---|---|
REPLACE_EXISTING | Заменить существующий файл. Непустой каталог заменить нельзя. Если целевой файл существует и является символической ссылкой, заменяется сама символическая ссылка, а не ее цель. |
COPY_ATTRIBUTES | Пытается скопировать в целевой файл атрибуты файла, связанные с исходным файлом. Точный набор копируемых атрибутов зависит от платформы и файловой системы и поэтому не определен. Как минимум, в целевой файл копируется last-modified-time, если это поддерживается хранилищами файлов источника и цели. При копировании временных меток файлов может теряться точность. |
NOFOLLOW_LINKS | Символические ссылки не отслеживаются. Если файл является символической ссылкой, копируется сама символическая ссылка, а не ее цель. Возможность копирования атрибутов файла в новую ссылку зависит от реализации. Иными словами, параметр COPY_ATTRIBUTES может игнорироваться при копировании символической ссылки. |
Реализация этого интерфейса может поддерживать дополнительные параметры, зависящие от реализации.
Копирование файла не является атомарной операцией. Если выброшено исключение IOException, целевой файл может оказаться неполным или некоторые его атрибуты могут быть не скопированы из исходного файла. Если указан параметр REPLACE_EXISTING и целевой файл существует, он заменяется. Проверка существования файла и создание нового файла могут быть неатомарными относительно других операций файловой системы.
Пример использования: Предположим, что нужно скопировать файл в каталог, присвоив ему то же имя, что и исходному файлу:
Path source = ...
Path newdir = ...
Files.copy(source, newdir.resolve(source.getFileName());
- Параметры:
-
source- путь к копируемому файлу -
target- путь к целевому файлу (он может быть связан с провайдером, отличным от провайдера исходного пути) -
options- параметры, определяющие способ копирования - Возвращает:
- путь к целевому файлу
- Исключения:
-
UnsupportedOperationException- если массив содержит неподдерживаемый параметр копирования -
FileAlreadyExistsException- если целевой файл существует, но его нельзя заменить, поскольку параметрREPLACE_EXISTINGне указан (необязательное конкретное исключение) -
DirectoryNotEmptyException- если указан параметрREPLACE_EXISTING, но файл нельзя заменить, поскольку он является непустым каталогом (необязательное конкретное исключение) -
IOException- если произошла ошибка ввода-вывода
move
public static Path move(Path source, Path target, CopyOption... options) throws IOException
По умолчанию этот метод пытается переместить файл в целевой файл и завершается ошибкой, если целевой файл существует, за исключением случая, когда источник и цель — один и тот же файл (same): в этом случае метод не оказывает эффекта. Если файл является символической ссылкой, перемещается сама символическая ссылка, а не ее цель. Этот метод можно вызвать для перемещения пустого каталога. В некоторых реализациях каталог содержит записи для специальных файлов или ссылок, создаваемых при создании каталога. В таких реализациях каталог считается пустым, если в нем есть только специальные записи. При перемещении непустого каталога он перемещается, если при этом не требуется перемещать содержащиеся в нем записи. Например, переименование каталога в том же FileStore обычно не требует перемещения записей каталога. Если для перемещения каталога необходимо переместить его записи, этот метод завершается ошибкой (выбрасывая
IOException). Перемещение дерева файлов может потребовать копирования каталогов вместо их перемещения; это можно сделать с помощью метода copy совместно со служебным методом Files.walkFileTree.
Параметр options может содержать любой из следующих параметров:
| Параметр | Описание |
|---|---|
REPLACE_EXISTING | Заменить существующий файл. Непустой каталог заменить нельзя. Если целевой файл существует и является символической ссылкой, заменяется сама символическая ссылка, а не ее цель. |
ATOMIC_MOVE | Перемещение выполняется как атомарная операция файловой системы, все остальные параметры игнорируются. Если целевой файл существует, зависит от реализации, будет ли существующий файл заменен или метод завершится ошибкой, выбросив IOException. Если перемещение нельзя выполнить как атомарную операцию файловой системы, выбрасывается AtomicMoveNotSupportedException. Например, это может произойти, если целевое расположение находится в другом FileStore и файл потребуется скопировать, либо если целевое расположение связано с провайдером, отличным от провайдера этого объекта. |
ATOMIC_MOVE не указан, проверка существования целевого файла и фактическое перемещение могут быть неатомарными относительно других операций файловой системы. Реализация этого интерфейса может поддерживать дополнительные параметры, зависящие от реализации.
При перемещении файла в целевой файл копируется last-modified-time, если это поддерживается хранилищами файлов источника и цели. При копировании временных меток файлов может теряться точность. Реализация также может попытаться скопировать другие атрибуты файла, но не обязана завершать операцию ошибкой, если атрибуты скопировать не удалось. Если перемещение выполняется неатомарно и выбрасывается IOException, состояние файлов не определено. Исходный и целевой файлы могут существовать одновременно; целевой файл может оказаться неполным или некоторые его атрибуты могут быть не скопированы из исходного файла.
Примеры использования: Предположим, что нужно переименовать файл в «newname», оставив его в том же каталоге:
Path source = ...
Files.move(source, source.resolveSibling("newname"));
Path source = ...
Path newdir = ...
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
- Параметры:
-
source- путь к перемещаемому файлу -
target- путь к целевому файлу (он может быть связан с провайдером, отличным от провайдера исходного пути) -
options- параметры, определяющие способ перемещения - Возвращает:
- путь к целевому файлу
- Исключения:
-
UnsupportedOperationException- если массив содержит неподдерживаемый параметр копирования -
FileAlreadyExistsException- если целевой файл существует, но его нельзя заменить, поскольку параметрREPLACE_EXISTINGне указан. Исключение также может быть выброшено, если параметрREPLACE_EXISTINGуказан, перемещение не является атомарным и целевой файл создается другим объектом примерно в момент вызова этого метода -
DirectoryNotEmptyException- если указан параметрREPLACE_EXISTING, но файл нельзя заменить, поскольку он является непустым каталогом, либо если источник — непустой каталог, содержащий записи, которые потребуется переместить (необязательные конкретные исключения) -
AtomicMoveNotSupportedException- если массив параметров содержит параметрATOMIC_MOVE, но файл нельзя переместить как атомарную операцию файловой системы. -
IOException- если произошла ошибка ввода-вывода
readSymbolicLink
public static Path readSymbolicLink(Path link) throws IOException
Если файловая система поддерживает символические ссылки, этот метод используется для чтения цели ссылки и завершается ошибкой, если файл не является символической ссылкой. Цель ссылки может не существовать. Возвращаемый объект Path будет связан с той же файловой системой, что и link.
- Параметры:
-
link- путь к символической ссылке - Возвращает:
- объект
Path, представляющий цель ссылки - Исключения:
-
UnsupportedOperationException- если реализация не поддерживает символические ссылки -
NotLinkException- если цель не удалось прочитать, поскольку файл не является символической ссылкой (необязательное конкретное исключение) -
IOException- если произошла ошибка ввода-вывода
getFileStore
public static FileStore getFileStore(Path path) throws IOException
FileStore, представляющее хранилище файлов, в котором находится файл. После получения ссылки на FileStore поведение операций с возвращенным FileStore и объектов FileStoreAttributeView, полученных из него, зависит от реализации: они могут продолжать зависеть от существования файла. В частности, поведение не определено, если файл удален или перемещен в другое хранилище файлов.
- Параметры:
-
path- путь к файлу - Возвращает:
- хранилище файлов, в котором находится файл
- Исключения:
-
IOException- если произошла ошибка ввода-вывода
isSameFile
public static boolean isSameFile(Path path, Path path2) throws IOException
Если оба объекта Path являются equal, этот метод возвращает true, не проверяя, существует ли файл. Если объекты Path связаны с разными провайдерами, этот метод возвращает false. В противном случае этот метод проверяет, указывают ли оба объекта Path на один и тот же файл; в зависимости от реализации для этого может потребоваться открыть оба файла или получить к ним доступ.
Если файловая система и файлы остаются неизменными, этот метод задает отношение эквивалентности для ненулевых Paths.
- Оно рефлексивно: для
PathfметодisSameFile(f,f)должен возвращатьtrue. - Оно симметрично: для двух
PathsfиgзначенияisSameFile(f,g)иisSameFile(g,f)будут равны. - Оно транзитивно: для трех
Pathsf,gиh, еслиisSameFile(f,g)возвращаетtrue, аisSameFile(g,h)возвращаетtrue, тоisSameFile(f,h)вернетtrue.
- Параметры:
-
path- один из путей к файлу -
path2- другой путь - Возвращает:
-
trueтогда и только тогда, когда оба пути указывают на один и тот же файл - Исключения:
-
IOException- если произошла ошибка ввода-вывода - См. также:
mismatch
public static long mismatch(Path path, Path path2) throws IOException
-1L, если несовпадений нет. Позиция находится в диапазоне от 0L до размера (в байтах) меньшего файла включительно. Два файла считаются совпадающими, если выполняется одно из следующих условий:
- Оба пути указывают на один и тот же файл, даже если два равных пути указывают на несуществующий файл; или
- Размеры двух файлов одинаковы и каждый байт первого файла совпадает с соответствующим байтом второго файла.
В противном случае файлы не совпадают, а значение, возвращаемое этим методом, представляет собой:
- Позицию первого несовпадающего байта; или
- Размер меньшего файла (в байтах), если файлы имеют разный размер и каждый байт меньшего файла совпадает с соответствующим байтом большего файла.
Этот метод может быть неатомарным относительно других операций файловой системы. Метод всегда рефлексивен (для Path f метод mismatch(f,f) возвращает -1L). Если файловая система и файлы остаются неизменными, метод является симметричным (для двух Paths f и g метод mismatch(f,g) вернет то же значение, что и метод mismatch(g,f)).
Если оба объекта Path равны, этот метод возвращает true, не проверяя, существует ли файл.
- Параметры:
-
path- путь к первому файлу -
path2- путь ко второму файлу - Возвращает:
- позицию первого несовпадения или
-1L, если несовпадений нет - Исключения:
-
IOException- если произошла ошибка ввода-вывода - С версии:
- 12
isHidden
public static boolean isHidden(Path path) throws IOException
- Примечание по API:
- Точное определение понятия «скрытый» зависит от платформы или провайдера. Например, в UNIX файл считается скрытым, если его имя начинается с точки ('.'). В Windows файл считается скрытым, если установлен атрибут DOS
hidden.В зависимости от реализации этому методу может потребоваться обратиться к файловой системе, чтобы определить, считается ли файл скрытым.
- Параметры:
-
path- путь к проверяемому файлу - Возвращает:
-
true, если файл считается скрытым - Исключения:
-
IOException- если произошла ошибка ввода-вывода
probeContentType
public static String probeContentType(Path path) throws IOException
Этот метод использует установленные реализации FileTypeDetector для проверки указанного файла и определения его типа содержимого. По очереди вызывается метод probeContentType каждого детектора типов файлов, чтобы определить тип файла. Если тип файла распознан, возвращается тип содержимого. Если файл не распознан ни одним из установленных детекторов типов файлов, для определения типа содержимого вызывается системный детектор типов файлов по умолчанию.
Каждый экземпляр виртуальной машины Java поддерживает общесистемный список детекторов типов файлов. Установленные детекторы типов файлов загружаются с помощью механизма загрузки поставщиков служб, определенного классом ServiceLoader. Установленные детекторы типов файлов загружаются системным загрузчиком классов. Если системный загрузчик классов не найден, используется загрузчик классов платформы. Детекторы типов файлов обычно устанавливаются путем размещения их в JAR-файле в пути классов приложения. JAR-файл содержит файл конфигурации поставщика с именем java.nio.file.spi.FileTypeDetector в каталоге ресурсов META-INF/services; в этом файле перечисляются одно или несколько полных имен конкретных подклассов FileTypeDetector с конструктором без аргументов. Если при поиске или создании экземпляров установленных детекторов типов файлов возникает ошибка, выбрасывается исключение, тип которого не определен. Порядок поиска установленных поставщиков зависит от реализации.
Возвращаемое этим методом значение представляет собой строку с типом содержимого Multipurpose Internet Mail Extension (MIME), определенным в RFC 2045: Многоцелевые расширения интернет-почты (MIME). Часть первая: формат тел интернет-сообщений. Гарантируется, что строку можно разобрать в соответствии с грамматикой, заданной в RFC.
- Параметры:
-
path- путь к проверяемому файлу - Возвращает:
- тип содержимого файла или
null, если определить тип содержимого не удалось - Исключения:
-
IOException- если произошла ошибка ввода-вывода - Внешние спецификации
getFileAttributeView
public static <V extends FileAttributeView> V getFileAttributeView(Path path, Class<V> type, LinkOption... options)
Представление атрибутов файла предоставляет доступ только для чтения или обновления к набору атрибутов файла. Этот метод предназначен для использования в случаях, когда представление атрибутов файла определяет типобезопасные методы для чтения или обновления атрибутов файла. Параметр type указывает тип требуемого представления атрибутов, а метод возвращает экземпляр этого типа, если он поддерживается. Тип BasicFileAttributeView обеспечивает доступ к основным атрибутам файла. Вызов этого метода для выбора представления атрибутов файла данного типа всегда возвращает экземпляр этого класса.
Массив options можно использовать, чтобы указать, как результирующее представление атрибутов файла обрабатывает символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются. Этот параметр игнорируется реализациями, не поддерживающими символические ссылки.
Пример использования: Предположим, что мы хотим прочитать или задать ACL файла, если он поддерживается:
Path path = ...
AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
if (view != null) {
List<AclEntry> acl = view.getAcl();
:
}
- Параметры типа:
V— типFileAttributeView- Параметры:
-
path— путь к файлу -
type— объектClass, соответствующий представлению атрибутов файла -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- представление атрибутов файла указанного типа или
null, если тип представления атрибутов недоступен
readAttributes
public static <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException
Параметр type указывает тип требуемых атрибутов, и этот метод возвращает экземпляр этого типа, если он поддерживается. Все реализации поддерживают базовый набор атрибутов файла, поэтому вызов этого метода с параметром type типа
BasicFileAttributes.class не приведёт к выбросу
UnsupportedOperationException.
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Реализация определяет, считываются ли все атрибуты файла как атомарная операция относительно других операций файловой системы.
Пример использования: Предположим, что мы хотим прочитать атрибуты файла одной операцией:
Path path = ...
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
PosixFileAttributes attrs =
Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
- Параметры типа:
A— типBasicFileAttributes- Параметры:
-
path— путь к файлу -
type— типClassатрибутов файла, которые требуется прочитать -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- атрибуты файла
- Выбрасывает:
-
UnsupportedOperationException— если атрибуты заданного типа не поддерживаются -
IOException— если произошла ошибка ввода-вывода
setAttribute
public static Path setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException
Параметр attribute определяет атрибут, который нужно задать, и имеет следующий формат:
[view-name:]attribute-nameгде квадратные скобки [...] обозначают необязательный компонент, а символ
':' обозначает сам себя. view-name — это name FileAttributeView, определяющего набор атрибутов файла. Если не указано, по умолчанию используется "basic" — имя представления атрибутов файла, определяющего базовый набор атрибутов, общий для многих файловых систем. attribute-name — имя атрибута в наборе.
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и задаётся атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Пример использования: Предположим, что мы хотим задать атрибут DOS «hidden»:
Path path = ...
Files.setAttribute(path, "dos:hidden", true);
- Параметры:
-
path— путь к файлу -
attribute— задаваемый атрибут -
value— значение атрибута -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- указанный путь
- Выбрасывает:
-
UnsupportedOperationException— если представление атрибутов недоступно -
IllegalArgumentException— если имя атрибута не указано или не распознано либо если значение атрибута имеет правильный тип, но недопустимое значение -
ClassCastException— если значение атрибута имеет неожидаемый тип или является коллекцией, содержащей элементы неожиданного типа -
IOException— если произошла ошибка ввода-вывода
getAttribute
public static Object getAttribute(Path path, String attribute, LinkOption... options) throws IOException
Параметр attribute определяет атрибут, который нужно прочитать, и имеет следующий формат:
[view-name:]attribute-nameгде квадратные скобки [...] обозначают необязательный компонент, а символ
':' обозначает сам себя. view-name — это name FileAttributeView, определяющего набор атрибутов файла. Если не указано, по умолчанию используется "basic" — имя представления атрибутов файла, определяющего базовый набор атрибутов, общий для многих файловых систем. attribute-name — имя атрибута.
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Пример использования: Предположим, что нам нужен идентификатор пользователя — владельца файла в системе, поддерживающей представление «unix»:
Path path = ...
int uid = (Integer)Files.getAttribute(path, "unix:uid");
- Параметры:
-
path— путь к файлу -
attribute— считываемый атрибут -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- значение атрибута
- Выбрасывает:
-
UnsupportedOperationException— если представление атрибутов недоступно -
IllegalArgumentException— если имя атрибута не указано или не распознано -
IOException— если произошла ошибка ввода-вывода
readAttributes
public static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException
Параметр attributes определяет атрибуты, которые нужно прочитать, и имеет следующий формат:
[view-name:]attribute-listгде квадратные скобки [...] обозначают необязательный компонент, а символ
':' обозначает сам себя. view-name — это name FileAttributeView, определяющего набор атрибутов файла. Если не указано, по умолчанию используется "basic" — имя представления атрибутов файла, определяющего базовый набор атрибутов, общий для многих файловых систем.
Компонент attribute-list — это список из одного или нескольких имён атрибутов, разделённых запятыми. Если список содержит значение "*", считываются все атрибуты. Неподдерживаемые атрибуты игнорируются и не включаются в возвращаемую карту. Реализация определяет, считываются ли все атрибуты как атомарная операция относительно других операций файловой системы.
В следующих примерах показаны возможные значения параметра
attributes:
| Пример | Описание |
|---|---|
"*" | Считывает все basic-file-attributes. |
"size,lastModifiedTime,lastAccessTime" | Считывает атрибуты размера файла, времени последнего изменения и времени последнего доступа. |
"posix:*" | Считывает все POSIX-file-attributes. |
"posix:permissions,owner,size" | Считывает разрешения POSIX для файла, владельца и размер файла. |
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
- Параметры:
-
path— путь к файлу -
attributes— считываемые атрибуты -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- карту возвращённых атрибутов; ключи карты — имена атрибутов, значения — значения атрибутов
- Выбрасывает:
-
UnsupportedOperationException— если представление атрибутов недоступно -
IllegalArgumentException— если атрибуты не указаны или указан нераспознанный атрибут -
IOException— если произошла ошибка ввода-вывода
getPosixFilePermissions
public static Set<PosixFilePermission> getPosixFilePermissions(Path path, LinkOption... options) throws IOException
Параметр path связан с FileSystem, поддерживающим PosixFileAttributeView. Это представление атрибутов обеспечивает доступ к атрибутам файлов, обычно связанным с файлами в файловых системах операционных систем, реализующих семейство стандартов Portable Operating System Interface (POSIX).
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
- Параметры:
-
path— путь к файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- разрешения файла
- Выбрасывает:
-
UnsupportedOperationException— если связанная файловая система не поддерживаетPosixFileAttributeView -
IOException— если произошла ошибка ввода-вывода
setPosixFilePermissions
public static Path setPosixFilePermissions(Path path, Set<PosixFilePermission> perms) throws IOException
Параметр path связан с FileSystem, поддерживающим PosixFileAttributeView. Это представление атрибутов обеспечивает доступ к атрибутам файлов, обычно связанным с файлами в файловых системах операционных систем, реализующих семейство стандартов Portable Operating System Interface (POSIX).
- Параметры:
-
path— путь к файлу -
perms— новый набор разрешений - Возвращает:
- указанный путь
- Выбрасывает:
-
UnsupportedOperationException— если связанная файловая система не поддерживаетPosixFileAttributeView -
ClassCastException— если набор содержит элементы, не относящиеся к типуPosixFilePermission -
IOException— если произошла ошибка ввода-вывода
getOwner
public static UserPrincipal getOwner(Path path, LinkOption... options) throws IOException
Параметр path связан с файловой системой, поддерживающей FileOwnerAttributeView. Это представление атрибутов файла обеспечивает доступ к атрибуту, указывающему владельца файла.
- Параметры:
-
path— путь к файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- субъект пользователя, представляющий владельца файла
- Выбрасывает:
-
UnsupportedOperationException— если связанная файловая система не поддерживаетFileOwnerAttributeView -
IOException— если произошла ошибка ввода-вывода
setOwner
public static Path setOwner(Path path, UserPrincipal owner) throws IOException
Параметр path связан с файловой системой, поддерживающей FileOwnerAttributeView. Это представление атрибутов файла обеспечивает доступ к атрибуту, указывающему владельца файла.
Пример использования: Предположим, что мы хотим назначить «joe» владельцем файла:
Path path = ...
UserPrincipalLookupService lookupService =
provider(path).getUserPrincipalLookupService();
UserPrincipal joe = lookupService.lookupPrincipalByName("joe");
Files.setOwner(path, joe);
- Параметры:
-
path— путь к файлу -
owner— новый владелец файла - Возвращает:
- указанный путь
- Выбрасывает:
-
UnsupportedOperationException— если связанная файловая система не поддерживаетFileOwnerAttributeView -
IOException— если произошла ошибка ввода-вывода - См. также:
isSymbolicLink
public static boolean isSymbolicLink(Path path)
Если необходимо отличить исключение ввода-вывода от случая, когда файл не является символической ссылкой, можно прочитать атрибуты файла с помощью метода readAttributes и проверить тип файла с помощью метода BasicFileAttributes.isSymbolicLink().
- Параметры:
-
path— путь к файлу - Возвращает:
-
true, если файл является символической ссылкой;false, если файл не существует, не является символической ссылкой или невозможно определить, является ли файл символической ссылкой.
isDirectory
public static boolean isDirectory(Path path, LinkOption... options)
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Если необходимо отличить исключение ввода-вывода от случая, когда файл не является каталогом, можно прочитать атрибуты файла с помощью метода readAttributes и проверить тип файла с помощью метода BasicFileAttributes.isDirectory().
- Параметры:
-
path— путь к проверяемому файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
-
true, если файл является каталогом;false, если файл не существует, не является каталогом или невозможно определить, является ли файл каталогом.
isRegularFile
public static boolean isRegularFile(Path path, LinkOption... options)
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Если необходимо отличить исключение ввода-вывода от случая, когда файл не является обычным файлом, можно прочитать атрибуты файла с помощью метода readAttributes и проверить тип файла с помощью метода BasicFileAttributes.isRegularFile().
- Параметры:
-
path— путь к файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
-
true, если файл является обычным файлом;false, если файл не существует, не является обычным файлом или невозможно определить, является ли файл обычным файлом.
getLastModifiedTime
public static FileTime getLastModifiedTime(Path path, LinkOption... options) throws IOException
Массив options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и считывается атрибут файла, на который указывает конечная цель ссылки. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
- Параметры:
-
path— путь к файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- объект
FileTime, представляющий время последнего изменения файла, или значение по умолчанию, определяемое реализацией, если файловая система не поддерживает метку времени последнего изменения - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода - См. также:
setLastModifiedTime
public static Path setLastModifiedTime(Path path, FileTime time) throws IOException
IOException. Пример использования: Предположим, что мы хотим задать в качестве времени последнего изменения текущее время:
Path path = ...
FileTime now = FileTime.fromMillis(System.currentTimeMillis());
Files.setLastModifiedTime(path, now);
- Параметры:
-
path— путь к файлу -
time— новое время последнего изменения - Возвращает:
- указанный путь
- Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода - См. также:
size
public static long size(Path path) throws IOException
regular, зависит от реализации и поэтому не определён.- Параметры:
-
path— путь к файлу - Возвращает:
- размер файла в байтах
- Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода - См. также:
exists
public static boolean exists(Path path, LinkOption... options)
Параметр options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Обратите внимание, что результат этого метода сразу же устаревает. Если метод сообщает, что файл существует, это не гарантирует успешность последующего доступа к нему. При использовании этого метода в приложениях с повышенными требованиями к безопасности следует соблюдать осторожность.
- Параметры:
-
path— путь к проверяемому файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
-
true, если файл существует;false, если файл не существует или невозможно определить, существует ли он. - См. также:
notExists
public static boolean notExists(Path path, LinkOption... options)
Параметр options можно использовать, чтобы указать, как обрабатываются символические ссылки, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются. Если указан параметр NOFOLLOW_LINKS, символические ссылки не отслеживаются.
Обратите внимание, что этот метод не является логическим дополнением метода exists. Если невозможно определить, существует ли файл, оба метода возвращают false. Как и в случае с методом exists, результат этого метода сразу же устаревает. Если метод сообщает, что файл не существует, это не гарантирует успешность последующей попытки создать файл. При использовании этого метода в приложениях с повышенными требованиями к безопасности следует соблюдать осторожность.
- Параметры:
-
path— путь к проверяемому файлу -
options— параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
-
true, если файл не существует;false, если файл существует или невозможно определить, существует ли он
isReadable
public static boolean isReadable(Path path)
Обратите внимание, что результат этого метода сразу же устаревает: нет гарантии, что последующая попытка открыть файл для чтения завершится успешно (или даже будет обращаться к тому же файлу). При использовании этого метода в приложениях с повышенными требованиями к безопасности следует соблюдать осторожность.
- Параметры:
-
path— путь к проверяемому файлу - Возвращает:
-
true, если файл существует и доступен для чтения;false, если файл не существует, в доступе для чтения будет отказано из-за недостатка привилегий у виртуальной машины Java или невозможно определить наличие доступа
isWritable
public static boolean isWritable(Path path)
Обратите внимание, что результат этого метода сразу же устаревает: нет гарантии, что последующая попытка открыть файл для записи завершится успешно (или даже будет обращаться к тому же файлу). При использовании этого метода в приложениях с повышенными требованиями к безопасности следует соблюдать осторожность.
- Параметры:
-
path— путь к проверяемому файлу - Возвращает:
-
true, если файл существует и доступен для записи;false, если файл не существует, в доступе для записи будет отказано из-за недостатка привилегий у виртуальной машины Java или невозможно определить наличие доступа
isExecutable
public static boolean isExecutable(Path path)
execute файла. Семантика проверки доступа к каталогу может отличаться. Например, в системах UNIX проверка доступа на выполнение проверяет, имеет ли виртуальная машина Java разрешение на поиск в каталоге для доступа к файлам или подкаталогам. В зависимости от реализации для проверки фактического доступа к файлу этому методу может потребоваться прочитать разрешения файла, списки управления доступом или другие атрибуты файла. Следовательно, этот метод может быть неатомарным относительно других операций файловой системы.
Обратите внимание, что результат этого метода сразу же устаревает: нет гарантии, что последующая попытка выполнить файл завершится успешно (или что при этом будет открыт тот же файл). При использовании этого метода в приложениях, критичных с точки зрения безопасности, следует соблюдать осторожность.
- Параметры:
-
path- путь к проверяемому файлу - Возвращает:
-
true, если файл существует и является исполняемым;false, если файл не существует, доступ на выполнение запрещён из-за недостаточных привилегий виртуальной машины Java или определить доступ невозможно
walkFileTree
public static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor) throws IOException
Этот метод обходит дерево файлов, корнем которого является заданный начальный файл. Обход дерева файлов выполняется в порядке поиска в глубину; для каждого обнаруженного файла вызывается указанный FileVisitor. Обход дерева файлов завершается, когда посещены все доступные файлы дерева или метод посещения возвращает результат TERMINATE. Если метод посещения завершает работу из-за IOException, необработанной ошибки или исключения времени выполнения, обход прекращается, а ошибка или исключение передаётся вызывающему этот метод коду.
Для каждого обнаруженного файла этот метод пытается прочитать его BasicFileAttributes. Если файл не является каталогом, вызывается метод visitFile с атрибутами файла. Если атрибуты файла невозможно прочитать из-за ошибки ввода-вывода, вызывается метод visitFileFailed с исключением ввода-вывода.
Если файл является каталогом и открыть его не удалось, вызывается метод visitFileFailed с исключением ввода-вывода, после чего обход дерева файлов по умолчанию продолжается со следующего соседнего элемента каталога.
Если каталог успешно открыт, посещаются его записи и их потомки. Когда посещены все записи или при переборе каталога возникает ошибка ввода-вывода, каталог закрывается и вызывается метод посетителя postVisitDirectory. Затем обход дерева файлов по умолчанию продолжается со следующего соседнего элемента каталога.
По умолчанию этот метод не следует автоматически по символическим ссылкам. Если параметр options содержит параметр FOLLOW_LINKS, переход по символическим ссылкам выполняется. При переходе по ссылкам, если атрибуты целевого объекта невозможно прочитать, этот метод пытается получить BasicFileAttributes ссылки. Если их удаётся прочитать, метод visitFile вызывается с атрибутами ссылки (в противном случае вызывается метод visitFileFailed, как указано выше).
Если параметр options содержит параметр FOLLOW_LINKS, этот метод отслеживает посещённые каталоги, чтобы обнаруживать циклы. Цикл возникает, когда в каталоге есть запись, являющаяся предком этого каталога. Циклы обнаруживаются путём записи file-key каталогов или, если ключи файлов недоступны, вызовом метода isSameFile для проверки, является ли каталог тем же файлом, что и один из его предков. Обнаруженный цикл рассматривается как ошибка ввода-вывода, и метод visitFileFailed вызывается с экземпляром FileSystemLoopException.
Параметр maxDepth задаёт максимальное количество уровней каталогов для посещения. Значение 0 означает, что посещается только начальный файл. Значение MAX_VALUE можно использовать, чтобы указать, что следует посетить все уровни. Метод visitFile вызывается для всех обнаруженных файлов, включая каталоги, на уровне maxDepth, если только не удаётся прочитать базовые атрибуты файла; в этом случае вызывается метод
visitFileFailed.
Если посетитель возвращает результат null, выбрасывается исключение
NullPointerException.
- Параметры:
-
start- начальный файл -
options- параметры для настройки обхода -
maxDepth- максимальное количество уровней каталогов для посещения -
visitor- посетитель файлов, вызываемый для каждого файла - Возвращает:
- начальный файл
- Выбрасывает:
-
IllegalArgumentException- если параметрmaxDepthотрицателен -
IOException- если метод посетителя выбрасывает ошибку ввода-вывода
walkFileTree
public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor) throws IOException
Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.walkFileTree(start, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor)
Иными словами, он не переходит по символическим ссылкам и посещает все уровни дерева файлов.- Параметры:
-
start- начальный файл -
visitor- посетитель файлов, вызываемый для каждого файла - Возвращает:
- начальный файл
- Выбрасывает:
-
IOException- если метод посетителя выбрасывает ошибку ввода-вывода
newBufferedReader
public static BufferedReader newBufferedReader(Path path, Charset cs) throws IOException
BufferedReader, который можно использовать для эффективного чтения текста из файла. Байты файла декодируются в символы с использованием указанной кодировки. Чтение начинается с начала файла. Методы Reader, считывающие данные из файла, выбрасывают
IOException, если прочитана некорректная или неподдерживаемая последовательность байтов.
- Параметры:
-
path- путь к файлу -
cs- кодировка для декодирования - Возвращает:
- новый буферизованный считыватель с размером буфера по умолчанию для чтения текста из файла
- Выбрасывает:
-
IOException- если при открытии файла возникает ошибка ввода-вывода - См. также:
newBufferedReader
public static BufferedReader newBufferedReader(Path path) throws IOException
BufferedReader для эффективного чтения текста из файла. Байты файла декодируются в символы с использованием UTF-8 charset. Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.newBufferedReader(path, StandardCharsets.UTF_8)
- Параметры:
-
path- путь к файлу - Возвращает:
- новый буферизованный считыватель с размером буфера по умолчанию для чтения текста из файла
- Выбрасывает:
-
IOException- если при открытии файла возникает ошибка ввода-вывода - Начиная с версии:
- 1.8
newBufferedWriter
public static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options) throws IOException
BufferedWriter, который можно использовать для эффективной записи текста в файл. Параметр options указывает, как файл создаётся или открывается. Если параметры не заданы, этот метод работает так, как если бы были указаны параметры CREATE, TRUNCATE_EXISTING и WRITE. Иными словами, он открывает файл для записи, создавая его, если он не существует, или сначала усекая существующий regular-file до размера 0, если он существует. Методы Writer для записи текста выбрасывают IOException, если текст невозможно закодировать с использованием указанной кодировки. Из-за буферизации IOException, вызванное ошибкой кодирования (неподдерживаемым символом или некорректным вводом), может быть выброшено при записи, сбросе буфера или закрытии буферизованного записывателя.
- Параметры:
-
path- путь к файлу -
cs- кодировка для кодирования -
options- параметры, определяющие способ открытия файла - Возвращает:
- новый буферизованный записыватель с размером буфера по умолчанию для записи текста в файл
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит недопустимое сочетание параметров -
IOException- если при открытии или создании файла возникает ошибка ввода-вывода -
UnsupportedOperationException- если указан неподдерживаемый параметр -
FileAlreadyExistsException- если путь указывает на существующий файл и задан параметрCREATE_NEW(необязательное конкретное исключение) - См. также:
newBufferedWriter
public static BufferedWriter newBufferedWriter(Path path, OpenOption... options) throws IOException
BufferedWriter для эффективной записи текста в файл. Текст кодируется в байты для записи с использованием UTF-8 charset. Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.newBufferedWriter(path, StandardCharsets.UTF_8, options)
- Параметры:
-
path- путь к файлу -
options- параметры, определяющие способ открытия файла - Возвращает:
- новый буферизованный записыватель с размером буфера по умолчанию для записи текста в файл
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит недопустимое сочетание параметров -
IOException- если при открытии или создании файла возникает ошибка ввода-вывода -
UnsupportedOperationException- если указан неподдерживаемый параметр -
FileAlreadyExistsException- если путь указывает на существующий файл и задан параметрCREATE_NEW(необязательное конкретное исключение) - Начиная с версии:
- 1.8
copy
public static long copy(InputStream in, Path target, CopyOption... options) throws IOException
По умолчанию копирование завершается ошибкой, если целевой файл уже существует или является символической ссылкой. Если указан параметр REPLACE_EXISTING и целевой файл уже существует, он заменяется, если не является непустым каталогом. Если целевой файл существует и является символической ссылкой, эта ссылка заменяется. В этой версии единственным параметром, поддержку которого обязан обеспечивать данный метод, является REPLACE_EXISTING. В будущих версиях могут поддерживаться дополнительные параметры.
Если при чтении из входного потока или записи в файл возникает ошибка ввода-вывода, она может произойти после создания целевого файла и после чтения или записи части байтов. Поэтому входной поток может не находиться в конце потока и может оказаться в несогласованном состоянии. Настоятельно рекомендуется незамедлительно закрыть входной поток при возникновении ошибки ввода-вывода.
Этот метод может бесконечно долго блокироваться при чтении из входного потока (или записи в файл). Поведение в случае, если входной поток асинхронно закрывается или поток прерывается во время копирования, в значительной степени зависит от входного потока и поставщика файловой системы и поэтому не определено.
Пример использования: предположим, что мы хотим получить веб-страницу и сохранить её в файл:
Path path = ...
URI u = URI.create("http://www.example.com/");
try (InputStream in = u.toURL().openStream()) {
Files.copy(in, path);
}
- Параметры:
-
in- входной поток для чтения -
target- путь к файлу -
options- параметры, определяющие способ копирования - Возвращает:
- количество прочитанных или записанных байтов
- Выбрасывает:
-
IOException- если при чтении или записи возникает ошибка ввода-вывода -
FileAlreadyExistsException- если целевой файл существует, но не может быть заменён, поскольку параметрREPLACE_EXISTINGне указан (необязательное конкретное исключение) -
DirectoryNotEmptyException- если указан параметрREPLACE_EXISTING, но файл невозможно заменить, поскольку он является непустым каталогом (необязательное конкретное исключение) -
UnsupportedOperationException- еслиoptionsсодержит неподдерживаемый параметр копирования
copy
public static long copy(Path source, OutputStream out) throws IOException
Если при чтении из файла или записи в выходной поток возникает ошибка ввода-вывода, она может произойти после чтения или записи части байтов. Поэтому выходной поток может оказаться в несогласованном состоянии. Настоятельно рекомендуется незамедлительно закрыть выходной поток при возникновении ошибки ввода-вывода.
Этот метод может бесконечно долго блокироваться при записи в выходной поток (или чтении из файла). Поведение в случае, если выходной поток асинхронно закрывается или поток прерывается во время копирования, в значительной степени зависит от выходного потока и поставщика файловой системы и поэтому не определено.
Обратите внимание: если указанный выходной поток реализует интерфейс Flushable, после завершения этого метода может потребоваться вызвать его метод flush, чтобы сбросить буферизованные данные.
- Параметры:
-
source- путь к файлу -
out- выходной поток для записи - Возвращает:
- количество прочитанных или записанных байтов
- Выбрасывает:
-
IOException- если при чтении или записи возникает ошибка ввода-вывода
readAllBytes
public static byte[] readAllBytes(Path path) throws IOException
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно прочитать все байты в массив байтов. Он не предназначен для чтения больших файлов.
- Параметры:
-
path- путь к файлу - Возвращает:
- массив байтов, содержащий байты, прочитанные из файла
- Выбрасывает:
-
IOException- если при чтении из потока возникает ошибка ввода-вывода -
OutOfMemoryError- если невозможно выделить массив требуемого размера, например если размер файла превышает2GB
readString
public static String readString(Path path) throws IOException
UTF-8 charset. Метод гарантирует закрытие файла после чтения всего содержимого или при возникновении ошибки ввода-вывода либо другого исключения времени выполнения. Этот метод эквивалентен: readString(path, StandardCharsets.UTF_8).
- Параметры:
-
path- путь к файлу - Возвращает:
- строка, содержащая содержимое, прочитанное из файла
- Выбрасывает:
-
IOException- если при чтении файла возникает ошибка ввода-вывода либо прочитана некорректная или неподдерживаемая последовательность байтов -
OutOfMemoryError- если файл очень велик, например его размер превышает2GB - Начиная с версии:
- 11
readString
public static String readString(Path path, Charset cs) throws IOException
Этот метод считывает всё содержимое, включая разделители строк в середине и/или в конце. Полученная строка будет содержать разделители строк в том виде, в каком они представлены в файле.
- Примечание API:
- Этот метод предназначен для простых случаев, когда уместно и удобно считывать содержимое файла в строку. Он не предназначен для чтения очень больших файлов.
- Параметры:
-
path- путь к файлу -
cs- кодировка для декодирования - Возвращает:
- строка, содержащая содержимое, прочитанное из файла
- Выбрасывает:
-
IOException- если при чтении файла возникает ошибка ввода-вывода либо прочитана некорректная или неподдерживаемая последовательность байтов -
OutOfMemoryError- если файл очень велик, например его размер превышает2GB - Начиная с версии:
- 11
readAllLines
public static List<String> readAllLines(Path path, Charset cs) throws IOException
Этот метод распознаёт следующие символы завершения строки:
-
\u000D, за которым следует\u000A, возврат каретки, за которым следует перевод строки -
\u000A, перевод строки -
\u000D, возврат каретки
В будущих версиях могут распознаваться дополнительные символы Юникода, завершающие строку.
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно прочитать все строки за одну операцию. Он не предназначен для чтения больших файлов.
- Параметры:
-
path- путь к файлу -
cs- кодировка для декодирования - Возвращает:
- строки из файла в виде
List; возможность измененияListзависит от реализации и поэтому не определена - Выбрасывает:
-
IOException- если при чтении файла возникает ошибка ввода-вывода либо прочитана некорректная или неподдерживаемая последовательность байтов - См. также:
readAllLines
public static List<String> readAllLines(Path path) throws IOException
UTF-8 charset. Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.readAllLines(path, StandardCharsets.UTF_8)
- Параметры:
-
path- путь к файлу - Возвращает:
- строки из файла в виде
List; возможность измененияListзависит от реализации и поэтому не определена - Выбрасывает:
-
IOException- если при чтении файла возникает ошибка ввода-вывода либо прочитана некорректная или неподдерживаемая последовательность байтов - Начиная с версии:
- 1.8
write
public static Path write(Path path, byte[] bytes, OpenOption... options) throws IOException
options указывает, как файл создаётся или открывается. Если параметры не заданы, этот метод работает так, как если бы были указаны параметры CREATE, TRUNCATE_EXISTING и WRITE. Иными словами, он открывает файл для записи, создавая его, если он не существует, или сначала усекая существующий regular-file до размера 0. Все байты массива байтов записываются в файл. Метод гарантирует закрытие файла после записи всех байтов (или при возникновении ошибки ввода-вывода либо другого исключения времени выполнения). Если возникает ошибка ввода-вывода, это может произойти после создания или усечения файла либо после записи части байтов в файл. Пример использования: по умолчанию метод создаёт новый файл или перезаписывает существующий. Предположим, что вместо этого требуется дописать байты в существующий файл:
Path path = ...
byte[] bytes = ...
Files.write(path, bytes, StandardOpenOption.APPEND);
- Параметры:
-
path- путь к файлу -
bytes- массив байтов для записи -
options- параметры, определяющие способ открытия файла - Возвращает:
- путь
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит недопустимое сочетание параметров -
IOException- если при записи в файл или его создании возникает ошибка ввода-вывода -
UnsupportedOperationException- если указан неподдерживаемый параметр -
FileAlreadyExistsException- если путь указывает на существующий файл и задан параметрCREATE_NEW(необязательное конкретное исключение)
write
public static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options) throws IOException
line.separator. Символы кодируются в байты с использованием указанной кодировки. Параметр options указывает, как файл создаётся или открывается. Если параметры не заданы, этот метод работает так, как если бы были указаны параметры CREATE, TRUNCATE_EXISTING и WRITE. Иными словами, он открывает файл для записи, создавая его, если он не существует, или сначала усекая существующий regular-file до размера 0. Метод гарантирует закрытие файла после записи всех строк (или при возникновении ошибки ввода-вывода либо другого исключения времени выполнения). Если возникает ошибка ввода-вывода, это может произойти после создания или усечения файла либо после записи части байтов в файл.
- Параметры:
-
path- путь к файлу -
lines- объект для перебора последовательностей символов -
cs- кодировка для кодирования -
options- параметры, определяющие способ открытия файла - Возвращает:
- путь
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит недопустимое сочетание параметров -
IOException- если при записи в файл или его создании возникает ошибка ввода-вывода либо текст невозможно закодировать с использованием указанной кодировки -
UnsupportedOperationException- если указан неподдерживаемый параметр -
FileAlreadyExistsException- если путь указывает на существующий файл и задан параметрCREATE_NEW(необязательное конкретное исключение)
write
public static Path write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options) throws IOException
UTF-8 charset. Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.write(path, lines, StandardCharsets.UTF_8, options)
- Параметры:
-
path- путь к файлу -
lines- объект для перебора последовательностей символов -
options- параметры, определяющие способ открытия файла - Возвращает:
- путь
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит недопустимое сочетание параметров -
IOException- если при записи в файл или его создании возникает ошибка ввода-вывода либо текст невозможно закодировать какUTF-8 -
UnsupportedOperationException- если указан неподдерживаемый параметр - Начиная с версии:
- 1.8
writeString
public static Path writeString(Path path, CharSequence csq, OpenOption... options) throws IOException
UTF-8 charset. Этот метод эквивалентен: writeString(path, csq, StandardCharsets.UTF_8, options).
- Параметры:
-
path— путь к файлу -
csq— записываемый CharSequence -
options— параметры, определяющие способ открытия файла - Возвращает:
- путь
- Исключения:
-
IllegalArgumentException— еслиoptionsсодержит недопустимую комбинацию параметров -
IOException— если при записи в файл или его создании возникает ошибка ввода-вывода либо текст невозможно закодировать с помощью UTF-8 -
UnsupportedOperationException— если указан неподдерживаемый параметр - С версии:
- 11
writeString
public static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption... options) throws IOException
Все символы записываются без изменений, включая разделители строк в символьной последовательности. Дополнительные символы не добавляются.
Параметр options определяет, как создается или открывается файл. Если параметры не указаны, этот метод работает так, как если бы были указаны параметры CREATE, TRUNCATE_EXISTING и WRITE. Другими словами, файл открывается для записи; если файл не существует, он создается, а существующий regular-file изначально усекается до размера 0.
- Параметры:
-
path— путь к файлу -
csq— записываемый CharSequence -
cs— кодировка для использования при кодировании -
options— параметры, определяющие способ открытия файла - Возвращает:
- путь
- Исключения:
-
IllegalArgumentException— еслиoptionsсодержит недопустимую комбинацию параметров -
IOException— если при записи в файл или его создании возникает ошибка ввода-вывода либо текст невозможно закодировать с помощью указанной кодировки -
UnsupportedOperationException— если указан неподдерживаемый параметр - С версии:
- 11
list
public static Stream<Path> list(Path dir) throws IOException
Stream, элементы которого являются записями каталога. Перечисление не является рекурсивным. Элементы потока — это объекты Path, полученные так, как если бы имя записи каталога разрешалось относительно dir с помощью resolving. Некоторые файловые системы поддерживают специальные ссылки на сам каталог и его родительский каталог. Записи, представляющие эти ссылки, не включаются.
Поток слабо согласован. Он потокобезопасен, но во время итерации не блокирует каталог, поэтому может отражать (а может и не отражать) изменения каталога, произошедшие после возврата из этого метода.
Возвращаемый поток содержит ссылку на открытый каталог. Каталог закрывается при закрытии потока.
Работа с закрытым потоком ведет себя так, как если бы был достигнут конец потока. Из-за предварительного чтения после закрытия потока могут быть возвращены один или несколько элементов.
Если при обращении к каталогу после возврата из этого метода возникает IOException, она оборачивается в UncheckedIOException, которая будет выброшена из метода, вызвавшего обращение.
- Примечание к API:
- Этот метод необходимо использовать в операторе try-with-resources или аналогичной управляющей конструкции, чтобы гарантировать своевременное закрытие открытого каталога потока после завершения операций с потоком.
- Параметры:
-
dir— путь к каталогу - Возвращает:
Stream, описывающий содержимое каталога- Исключения:
-
NotDirectoryException— если файл не удалось открыть по другой причине, поскольку он не является каталогом (необязательное конкретное исключение) -
IOException— если при открытии каталога возникает ошибка ввода-вывода - С версии:
- 1.8
- См. также:
walk
public static Stream<Path> walk(Path start, int maxDepth, FileVisitOption... options) throws IOException
Stream, лениво заполняемый
Path при обходе дерева файлов, корнем которого является заданный начальный файл. Обход дерева файлов выполняется в глубину: каталог посещается до его записей. Элементы потока — это объекты Path, полученные так, как если бы относительный путь разрешался относительно start с помощью resolving. stream обходит дерево файлов по мере потребления элементов. Гарантируется, что возвращаемый Stream содержит как минимум один элемент — сам начальный файл. Для каждого посещаемого файла поток пытается прочитать его BasicFileAttributes. Если файл является каталогом и его удалось успешно открыть, записи каталога и их потомки добавляются в поток после каталога по мере обнаружения. После посещения всех записей каталог закрывается. Затем обход дерева файлов продолжается со следующего соседнего элемента каталога.
Поток слабо согласован. Во время итерации он не блокирует дерево файлов, поэтому может отражать (а может и не отражать) изменения дерева файлов, произошедшие после возврата из этого метода.
По умолчанию этот метод автоматически не переходит по символическим ссылкам. Если параметр options содержит параметр FOLLOW_LINKS, переход по символическим ссылкам выполняется. При переходе по ссылкам, если атрибуты целевого объекта прочитать невозможно, метод пытается получить BasicFileAttributes ссылки.
Если параметр options содержит параметр FOLLOW_LINKS, поток отслеживает посещенные каталоги, чтобы обнаруживать циклы. Цикл возникает, когда в каталоге есть запись, являющаяся предком этого каталога. Обнаружение циклов выполняется путем сохранения file-key каталогов или, если ключи файлов недоступны, вызова метода isSameFile для проверки, является ли каталог тем же файлом, что и один из его предков. При обнаружении цикла он рассматривается как ошибка ввода-вывода с экземпляром FileSystemLoopException.
Параметр maxDepth — это максимальное количество уровней каталогов для посещения. Значение 0 означает, что посещается только начальный файл. Значение MAX_VALUE можно использовать, чтобы указать, что следует посетить все уровни.
Возвращаемый поток содержит ссылки на один или несколько открытых каталогов. Каталоги закрываются при закрытии потока.
Если при обращении к каталогу после возврата из этого метода возникает IOException, она оборачивается в UncheckedIOException, которая будет выброшена из метода, вызвавшего обращение.
- Примечание к API:
- Этот метод необходимо использовать в операторе try-with-resources или аналогичной управляющей конструкции, чтобы гарантировать своевременное закрытие открытых каталогов потока после завершения операций с потоком.
- Параметры:
-
start— начальный файл -
maxDepth— максимальное количество уровней каталогов для посещения -
options— параметры настройки обхода - Возвращает:
StreamобъектовPath- Исключения:
-
IllegalArgumentException— если параметрmaxDepthимеет отрицательное значение -
IOException— если при обращении к начальному файлу возникает ошибка ввода-вывода. - С версии:
- 1.8
walk
public static Stream<Path> walk(Path start, FileVisitOption... options) throws IOException
Stream, лениво заполняемый
Path при обходе дерева файлов, корнем которого является заданный начальный файл. Обход дерева файлов выполняется в глубину: каталог посещается до его записей. Элементы потока — это объекты Path, полученные так, как если бы относительный путь разрешался относительно start с помощью resolving. Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.walk(start, Integer.MAX_VALUE, options)
Другими словами, он посещает все уровни дерева файлов. Возвращаемый поток содержит ссылки на один или несколько открытых каталогов. Каталоги закрываются при закрытии потока.
- Примечание к API:
- Этот метод необходимо использовать в операторе try-with-resources или аналогичной управляющей конструкции, чтобы гарантировать своевременное закрытие открытых каталогов потока после завершения операций с потоком.
- Параметры:
-
start— начальный файл -
options— параметры настройки обхода - Возвращает:
StreamобъектовPath- Исключения:
-
IOException— если при обращении к начальному файлу возникает ошибка ввода-вывода. - С версии:
- 1.8
- См. также:
find
public static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path, BasicFileAttributes> matcher, FileVisitOption... options) throws IOException
Stream, лениво заполняемый
Path при поиске файлов в дереве файлов, корнем которого является заданный начальный файл. Этот метод обходит дерево файлов точно так же, как указано в методе walk. Для каждого обнаруженного файла вызывается заданный BiPredicate, которому передаются его Path и BasicFileAttributes. Объект Path получается так, как если бы относительный путь разрешался относительно
start с помощью resolving, и включается в возвращаемый Stream только в том случае, если BiPredicate возвращает true. По сравнению с вызовом filter для Stream, возвращаемого методом walk, этот метод может быть эффективнее, поскольку позволяет избежать повторного получения BasicFileAttributes.
Возвращаемый поток содержит ссылки на один или несколько открытых каталогов. Каталоги закрываются при закрытии потока.
Если при обращении к каталогу после возврата из этого метода возникает IOException, она оборачивается в UncheckedIOException, которая будет выброшена из метода, вызвавшего обращение.
- Примечание к API:
- Этот метод необходимо использовать в операторе try-with-resources или аналогичной управляющей конструкции, чтобы гарантировать своевременное закрытие открытых каталогов потока после завершения операций с потоком.
- Параметры:
-
start— начальный файл -
maxDepth— максимальное количество уровней каталогов для поиска -
matcher— функция, определяющая, следует ли включать файл в возвращаемый поток -
options— параметры настройки обхода - Возвращает:
StreamобъектовPath- Исключения:
-
IllegalArgumentException— если параметрmaxDepthимеет отрицательное значение -
IOException— если при обращении к начальному файлу возникает ошибка ввода-вывода. - С версии:
- 1.8
- См. также:
lines
public static Stream<String> lines(Path path, Charset cs) throws IOException
Stream. В отличие от readAllLines, этот метод не считывает все строки в List, а заполняет его лениво по мере потребления потока. Байты из файла декодируются в символы с использованием указанной кодировки; поддерживаются те же разделители строк, что и в
readAllLines.
Возвращаемый поток содержит ссылку на открытый файл. Файл закрывается при закрытии потока.
Не следует изменять содержимое файла во время выполнения терминальной операции с потоком. В противном случае результат терминальной операции с потоком не определен.
После возврата из этого метода все последующие исключения ввода-вывода, возникающие при чтении файла, а также ошибки при чтении некорректной или неотображаемой последовательности байтов оборачиваются в UncheckedIOException, которая будет выброшена из метода Stream, вызвавшего чтение. Если при закрытии файла возникает IOException, оно также оборачивается в UncheckedIOException.
- Примечание к API:
- Этот метод необходимо использовать в операторе try-with-resources или аналогичной управляющей конструкции, чтобы гарантировать своевременное закрытие открытого файла потока после завершения операций с потоком.
- Примечание по реализации:
- Эта реализация обеспечивает хорошую производительность параллельных потоков для стандартных кодировок
UTF-8,US-ASCIIиISO-8859-1. Такие оптимальные для строк кодировки обладают свойством, благодаря которому закодированные байты перевода строки ('\n') или возврата каретки ('\r') можно эффективно отличить от других закодированных символов при произвольном доступе к байтам файла.Для кодировок, не являющихся оптимальными для строк, сплитератор источника потока обладает низкими возможностями разделения, как и сплитератор, связанный с итератором или с потоком, возвращаемым методом
BufferedReader.lines(). Низкие возможности разделения могут привести к низкой производительности параллельного потока.Для оптимальных для строк кодировок сплитератор источника потока обладает хорошими возможностями разделения при условии, что файл содержит регулярную последовательность строк. Хорошие возможности разделения могут обеспечить высокую производительность параллельного потока. Сплитератор для оптимальной для строк кодировки использует ее свойства (эффективное распознавание перевода строки или возврата каретки), чтобы при разделении приблизительно делить пополам количество охватываемых строк.
- Параметры:
-
path— путь к файлу -
cs— кодировка для декодирования - Возвращает:
- строки из файла в виде
Stream - Исключения:
-
IOException— если при открытии файла возникает ошибка ввода-вывода - С версии:
- 1.8
- См. также:
lines
public static Stream<String> lines(Path path) throws IOException
Stream. Байты из файла декодируются в символы с использованием UTF-8 charset. Возвращаемый поток содержит ссылку на открытый файл. Файл закрывается при закрытии потока.
Не следует изменять содержимое файла во время выполнения терминальной операции с потоком. В противном случае результат терминальной операции с потоком не определен.
Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
Files.lines(path, StandardCharsets.UTF_8)
- Примечание к API:
- Этот метод необходимо использовать в операторе try-with-resources или аналогичной управляющей конструкции, чтобы гарантировать своевременное закрытие открытого файла потока после завершения операций с потоком.
- Параметры:
-
path— путь к файлу - Возвращает:
- строки из файла в виде
Stream - Исключения:
-
IOException— если при открытии файла возникает ошибка ввода-вывода - С версии:
- 1.8
© 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.