Класс Files
public final class Files extends Object
В большинстве случаев методы, определённые здесь, делегируют выполнение файловых операций соответствующему поставщику файловой системы.
- С версии:
- 1.7
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static long |
copy |
Копирует все байты из входного потока в файл. |
static long |
copy |
Копирует все байты из файла в выходной поток. |
static Path |
copy |
Копирует файл в целевой файл. |
static Path |
createDirectories |
Создаёт каталог, предварительно создав все отсутствующие родительские каталоги. |
static Path |
createDirectory |
Создаёт новый каталог. |
static Path |
createFile |
Создаёт новый пустой файл и завершается ошибкой, если файл уже существует. |
static Path |
createLink |
Создаёт новую ссылку (запись каталога) для существующего файла (необязательная операция). |
static Path |
createSymbolicLink |
Создаёт символическую ссылку на целевой объект (необязательная операция). |
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 в файл. |
Подробное описание методов
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. Иными словами, файл открывается для записи; если файл не существует, он создаётся, а если существует, то сначала regular-file усекается до размера 0.
Примеры использования:
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
Параметр attrs — это необязательный список объектов file-attributes, которые атомарно устанавливаются при создании файла. Каждый атрибут определяется своим name. Если в массив включено несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
- Параметры:
-
path— путь к создаваемому файлу -
attrs— необязательный список файловых атрибутов, которые следует атомарно задать при создании файла - Возвращает:
- файл
- Исключения:
-
UnsupportedOperationException— если массив содержит атрибут, который нельзя атомарно задать при создании файла -
FileAlreadyExistsException— если файл с таким именем уже существует (необязательное специфичное исключение) -
IOException— если произошла ошибка ввода-вывода или родительский каталог не существует
createDirectory
public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
createDirectories. Параметр attrs — это необязательный список объектов file-attributes, которые атомарно устанавливаются при создании каталога. Каждый атрибут определяется своим name. Если в массив включено несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
- Параметры:
-
dir— создаваемый каталог -
attrs— необязательный список файловых атрибутов, которые следует атомарно задать при создании каталога - Возвращает:
- каталог
- Исключения:
-
UnsupportedOperationException— если массив содержит атрибут, который нельзя атомарно задать при создании каталога -
FileAlreadyExistsException— если каталог не удалось создать по другой причине, поскольку файл с таким именем уже существует (необязательное специфичное исключение) -
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
Параметр target задает цель ссылки. Это может быть absolute или относительный путь, и цель может не существовать. Если цель — относительный путь, операции файловой системы над созданной ссылкой выполняются относительно пути ссылки.
Параметр attrs задает необязательные attributes, которые следует атомарно задать при создании ссылки. Каждый атрибут идентифицируется своим name. Если массив содержит несколько атрибутов с одинаковым именем, все вхождения, кроме последнего, игнорируются.
Если символические ссылки поддерживаются, но базовое FileStore их не поддерживает, операция может завершиться ошибкой IOException. Кроме того, в некоторых операционных системах для создания символических ссылок может потребоваться запуск виртуальной машины Java с привилегиями, зависящими от реализации; в этом случае метод может выбросить IOException.
- Параметры:
-
link— путь создаваемой символической ссылки -
target— цель символической ссылки -
attrs— массив атрибутов, которые следует атомарно задать при создании символической ссылки - Возвращает:
- путь к символической ссылке
- Исключения:
-
UnsupportedOperationException— если реализация не поддерживает символические ссылки или массив содержит атрибут, который нельзя атомарно задать при создании символической ссылки -
FileAlreadyExistsException— если файл с таким именем уже существует (необязательное специализированное исключение) -
IOException— если произошла ошибка ввода-вывода
createLink
public static Path createLink(Path link, Path existing) throws IOException
Параметр link задает расположение создаваемой записи каталога. Параметр existing — путь к существующему файлу. Этот метод создает новую запись каталога для файла, чтобы к нему можно было обращаться по пути link. В некоторых файловых системах это называется созданием «жесткой ссылки». Если параметр existing указывает на символическую ссылку, то зависит от платформы, будет ли новая ссылка указывать на цель символической ссылки или на саму символическую ссылку; это поведение не специфицировано. Сохранение файловых атрибутов для файла или для каждой записи каталога зависит от файловой системы и также не специфицировано. Как правило, файловая система требует, чтобы все ссылки (записи каталога) на файл находились в одной файловой системе. Кроме того, на некоторых платформах для создания жестких ссылок или ссылок на каталоги может потребоваться запуск виртуальной машины Java с привилегиями, зависящими от реализации.
- Параметры:
-
link— создаваемая ссылка (запись каталога) -
existing— путь к существующему файлу - Возвращает:
- путь к ссылке (записи каталога)
- Исключения:
-
UnsupportedOperationException— если реализация не поддерживает добавление существующего файла в каталог -
FileAlreadyExistsException— если запись не удалось создать по другой причине, поскольку файл с таким именем уже существует (необязательное специализированное исключение) -
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: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. Гарантируется, что строку можно разобрать согласно грамматике, заданной в 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, возврат каретки
В будущих версиях могут распознаваться дополнительные разделители строк Unicode.
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно считывать все строки за одну операцию. Он не предназначен для чтения больших файлов.
- Параметры:
-
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, полученные так, как если бы имя записи каталога было resolving относительно dir. Некоторые файловые системы содержат специальные ссылки на сам каталог и на его родительский каталог. Записи, представляющие эти ссылки, не включаются.
Поток является слабо согласованным. Он потокобезопасен, но не блокирует каталог на время обхода, поэтому может отражать обновления каталога, произошедшие после возврата этого метода, а может и не отражать их.
Возвращаемый поток содержит ссылку на открытый каталог. Каталог закрывается при закрытии потока.
Операции с закрытым потоком выполняются так, как если бы был достигнут конец потока. Из-за предварительного чтения после закрытия потока могут быть возвращены один или несколько элементов.
Если при обращении к каталогу после возврата этого метода возникает 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, полученные так, как если бы относительный путь был resolving относительно start. 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, полученные так, как если бы относительный путь был resolving относительно start. Этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
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 получается так, как если бы относительный путь был resolving относительно
start, и включается в возвращаемый 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/file/Files.html