Spec-Zone.ru › OpenJDK 24

Файлы класса

java.lang.Object
java.nio.file.Files
public final class Files extends Object
Этот класс состоит исключительно из статических методов, которые работают с файлами, каталогами или другими типами файлов.

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

Since:
1.7

Краткое описание методов

Модификатор и тип Метод Описание
static long copy(InputStream in, Path target, CopyOption... options)
Копирует все байты из входного потока в файл.
static long copy(Path source, OutputStream out)
Копирует все байты из файла в выходной поток.
static Path copy(Path source, Path target, CopyOption... options)
Копирует файл в целевой файл.
static Path createDirectories(Path dir, FileAttribute<?>... attrs)
Создаёт директорию, предварительно создавая все несуществующие родительские директории.
static Path createDirectory(Path dir, FileAttribute<?>... attrs)
Создаёт новую директорию.
static Path createFile(Path path, FileAttribute<?>... attrs)
Создаёт новый пустой файл, если файл с таким именем уже существует, происходит ошибка.
static Path createLink(Path link, Path existing)
Создаёт новую ссылку (запись в каталоге) для существующего файла (необязательная операция).
static Path createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs)
Создаёт символическую ссылку на целевой объект (необязательная операция).
static Path createTempDirectory(String prefix, FileAttribute<?>... attrs)
Создаёт новую директорию в стандартном каталоге временных файлов, используя заданный префикс для генерации имени.
static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs)
Создаёт новую директорию в указанной директории, используя заданный префикс для генерации имени.
static Path createTempFile(String prefix, String suffix, FileAttribute<?>... attrs)
Создаёт пустой файл в стандартном каталоге временных файлов, используя заданный префикс и суффикс для генерации имени.
static Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs)
Создаёт новый пустой файл в указанной директории, используя заданные префикс и суффикс для генерации имени.
static void delete(Path path)
Удаляет файл.
static boolean deleteIfExists(Path path)
Удаляет файл, если он существует.
static boolean exists(Path path, LinkOption... options)
Проверяет существование файла.
static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path, BasicFileAttributes> matcher, FileVisitOption... options)
Возвращает Stream, который лениво заполняется Path, выполняя поиск файлов в дереве файлов, корнем которого является заданный начальный файл.
static Object getAttribute(Path path, String attribute, LinkOption... options)
Считывает значение атрибута файла.
static <V extends FileAttributeView>
V
getFileAttributeView(Path path, Class<V> type, LinkOption... options)
Возвращает представление атрибута файла заданного типа.
static FileStore getFileStore(Path path)
Возвращает FileStore, представляющий хранилище файлов, где расположен файл.
static FileTime getLastModifiedTime(Path path, LinkOption... options)
Возвращает время последней модификации файла.
static UserPrincipal getOwner(Path path, LinkOption... options)
Возвращает владельца файла.
static Set<PosixFilePermission> getPosixFilePermissions(Path path, LinkOption... options)
Возвращает разрешения POSIX для файла.
static boolean isDirectory(Path path, LinkOption... options)
Проверяет, является ли файл директорией.
static boolean isExecutable(Path path)
Проверяет, исполняемый ли файл.
static boolean isHidden(Path path)
Определяет, скрыт ли файл.
static boolean isReadable(Path path)
Проверяет, доступен ли файл для чтения.
static boolean isRegularFile(Path path, LinkOption... options)
Проверяет, является ли файл обычным файлом с непрозрачным содержимым.
static boolean isSameFile(Path path, Path path2)
Проверяет, указывают ли два пути на один и тот же файл.
static boolean isSymbolicLink(Path path)
Проверяет, является ли файл символической ссылкой.
static boolean isWritable(Path path)
Проверяет, доступен ли файл для записи.
static Stream<String> lines(Path path)
Считывает все строки из файла как Stream.
static Stream<String> lines(Path path, Charset cs)
Считывает все строки из файла как Stream.
static Stream<Path> list(Path dir)
Возвращает лениво заполненную Stream, элементами которой являются записи в каталоге.
static long mismatch(Path path, Path path2)
Находит и возвращает позицию первого несовпадающего байта в содержимом двух файлов, или -1L, если несоответствий нет.
static Path move(Path source, Path target, CopyOption... options)
Перемещает или переименовывает файл в целевой файл.
static BufferedReader newBufferedReader(Path path)
Открывает файл для чтения, возвращая BufferedReader для эффективного чтения текста из файла.
static BufferedReader newBufferedReader(Path path, Charset cs)
Открывает файл для чтения, возвращая BufferedReader, который может использоваться для эффективного чтения текста из файла.
static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options)
Открывает или создаёт файл для записи, возвращая BufferedWriter, который может использоваться для записи текста в файл эффективно.
static BufferedWriter newBufferedWriter(Path path, OpenOption... options)
Открывает или создаёт файл для записи, возвращая BufferedWriter для записи текста в файл эффективно.
static SeekableByteChannel newByteChannel(Path path, OpenOption... options)
Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу.
static SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs)
Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу.
static DirectoryStream<Path> newDirectoryStream(Path dir)
Открывает директорию, возвращая DirectoryStream для перебора всех записей в директории.
static DirectoryStream<Path> newDirectoryStream(Path dir, String glob)
Открывает директорию, возвращая DirectoryStream для перебора записей в каталоге.
static DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)
Открывает директорию, возвращая DirectoryStream для перебора записей в каталоге.
static InputStream newInputStream(Path path, OpenOption... options)
Открывает файл, возвращая входной поток для чтения из файла.
static OutputStream newOutputStream(Path path, OpenOption... options)
Открывает или создаёт файл, возвращая выходной поток для записи байтов в файл.
static boolean notExists(Path path, LinkOption... options)
Проверяет, не существует ли файл по этому пути.
static String probeContentType(Path path)
Определяет тип содержимого файла.
static byte[] readAllBytes(Path path)
Считывает все байты из файла.
static List<String> readAllLines(Path path)
Считывает все строки из файла.
static List<String> readAllLines(Path path, Charset cs)
Считывает все строки из файла.
static <A extends BasicFileAttributes>
A
readAttributes(Path path, Class<A> type, LinkOption... options)
Считывает атрибуты файла как операцию по пакетной обработке.
static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options)
Считывает набор атрибутов файла как операцию по пакетной обработке.
static String readString(Path path)
Считывает всё содержимое файла в строку, декодируя байты в символы с использованием UTF-8 charset.
static String readString(Path path, Charset cs)
Считывает все символы из файла в строку, декодируя байты в символы с использованием указанного кодирования.
static Path readSymbolicLink(Path link)
Считывает целевой объект символической ссылки (необязательная операция).
static Path setAttribute(Path path, String attribute, Object value, LinkOption... options)
Устанавливает значение атрибута файла.
static Path setLastModifiedTime(Path path, FileTime time)
Обновляет время последней модификации файла.
static Path setOwner(Path path, UserPrincipal owner)
Обновляет владельца файла.
static Path setPosixFilePermissions(Path path, Set<PosixFilePermission> perms)
Устанавливает разрешения POSIX для файла.
END_OF_DOCUMENT_MARKER
static long size(Path path)
Возвращает размер файла (в байтах).
static Stream<Path> walk(Path start, int maxDepth, FileVisitOption... options)
Возвращает Stream, который заполняется лениво Path, проходя по дереву файлов, начиная с указанного файла.
static Stream<Path> walk(Path start, FileVisitOption... options)
Возвращает Stream, который заполняется лениво Path, проходя по дереву файлов, начиная с указанного файла.
static Path walkFileTree(Path start, FileVisitor<? super Path> visitor)
Проходит по дереву файлов.
static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor)
Проходит по дереву файлов.
static Path write(Path path, byte[] bytes, OpenOption... options)
Записывает байты в файл.
static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options)
Записывает строки текста в файл.
static Path write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
Записывает строки текста в файл.
static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption... options)
Записывает CharSequence в файл.
static Path writeString(Path path, CharSequence csq, OpenOption... options)
Записывает CharSequence в файл.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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 могут присутствовать следующие опции:

Options
Опция Описание
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 - если произошла ошибка ввода-вывода
См. также:
  • FileChannel.open(Path,Set,FileAttribute[])

newByteChannel

public static SeekableByteChannel newByteChannel(Path path, OpenOption... options) throws IOException
Открывает или создает файл, возвращая доступный байтовый канал для доступа к файлу.

Этот метод открывает или создает файл точно так же, как метод newByteChannel.

Параметры:
path - путь к файлу для открытия или создания
options - опции, определяющие, как открывается файл
Возвращает:
новый байтовый канал поиска
Исключения:
IllegalArgumentException - если набор содержит недопустимую комбинацию опций
UnsupportedOperationException - если указана неподдерживаемая опция открытия
FileAlreadyExistsException - Если файл с таким именем уже существует, и указана опция CREATE_NEW и файл открывается для записи (дополнительное специфическое исключение)
IOException - если произошла ошибка ввода-вывода
См. также:
  • FileChannel.open(Path,OpenOption[])

newDirectoryStream

public static DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
Открывает директорию, возвращая DirectoryStream для итерирования по всем записям в директории. Элементы, возвращаемые методом iterator потока директории, имеют тип Path, каждый из которых представляет запись в директории. Объекты Path получаются так, как если бы имя записи в директории было резольвлено с помощью resolving относительно dir.

Если не используется конструкция try-with-resources, то метод close потока директории должен быть вызван после завершения итерирования, чтобы освободить ресурсы, удерживаемые для открытой директории.

Если реализация поддерживает операции над записями в директории, выполняемые без гонок, то возвращаемый поток директории является SecureDirectoryStream.

Parameters:
dir - путь к директории
Returns:
новый и открытый объект DirectoryStream
Throws:
NotDirectoryException - если файл по какой-либо причине не может быть открыт, потому что он не является директорией (необязательное конкретное исключение)
IOException - если произошла ошибка ввода-вывода

newDirectoryStream

public static DirectoryStream<Path> newDirectoryStream(Path dir, String glob) throws IOException
Открывает директорию, возвращая DirectoryStream для итерирования по записям в директории. Элементы, возвращаемые методом iterator потока директории, имеют тип Path, каждый из которых представляет запись в директории. Объекты Path получаются так, как если бы имя записи в директории было резольвлено с помощью resolving относительно dir. Записи, возвращаемые итератором, отфильтрованы по соответствию строкового представления имён файлов заданному шаблону globbing.

Например, предположим, что мы хотим итерироваться по файлам, заканчивающимся на ".java" в директории:

    Path dir = ...
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.java")) {
        :
    }

Шаблон globbing задается методом getPathMatcher.

Если не используется конструкция try-with-resources, то метод close потока директории должен быть вызван после завершения итерирования, чтобы освободить ресурсы, удерживаемые для открытой директории.

Если реализация поддерживает операции над записями в директории, выполняемые без гонок, то возвращаемый поток директории является SecureDirectoryStream.

Parameters:
dir - путь к директории
glob - шаблон globbing
Returns:
новый и открытый объект DirectoryStream
Throws:
PatternSyntaxException - если шаблон некорректен
NotDirectoryException - если файл по какой-либо причине не может быть открыт, потому что он не является директорией (необязательное конкретное исключение)
IOException - если произошла ошибка ввода-вывода

newDirectoryStream

public static DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
Открывает директорию, возвращая DirectoryStream для итерирования по записям в директории. Элементы, возвращаемые методом iterator потока директории, имеют тип Path, каждый из которых представляет запись в директории. Объекты Path получаются так, как если бы имя записи в директории было резольвлено с помощью resolving относительно dir. Записи, возвращаемые итератором, отфильтрованы данным фильтром 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)) {
        :
    }
Parameters:
dir - путь к директории
filter - фильтр потока директории
Returns:
новый и открытый объект DirectoryStream
Throws:
NotDirectoryException - если файл по какой-либо причине не может быть открыт, потому что он не является директорией (необязательное конкретное исключение)
IOException - если произошла ошибка ввода-вывода

createFile

public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException
Создаёт новый пустой файл, если он не существует. Проверка существования файла и создание нового файла, если он не существует, являются атомарной операцией по отношению ко всем другим файловым операциям, которые могут повлиять на директорию.

Параметр attrs - необязательный список file-attributes для атомарного задания атрибутов при создании файла. Каждый атрибут идентифицируется по своему имени с помощью name. Если в массиве присутствует более одного атрибута с одинаковым именем, то все, кроме последнего, будут проигнорированы.

Parameters:
path - путь к файлу для создания
attrs - необязательный список атрибутов файла для атомарного задания при создании файла
Returns:
файл
Throws:
UnsupportedOperationException - если массив содержит атрибут, который не может быть задан атомарно при создании файла
FileAlreadyExistsException - Если файл с таким именем уже существует (необязательное конкретное исключение)
IOException - если произошла ошибка ввода-вывода или родительская директория не существует

createDirectory

public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
Создаёт новую директорию. Проверка существования директории и создание директории, если она не существует, являются атомарной операцией по отношению ко всем другим файловым операциям, которые могут повлиять на директорию. Метод createDirectories следует использовать в случае необходимости создания всех отсутствующих родительских директорий.

Параметр attrs - необязательный список file-attributes для атомарного задания атрибутов при создании директории. Каждый атрибут идентифицируется по своему имени с помощью name. Если в массиве присутствует более одного атрибута с одинаковым именем, то все, кроме последнего, будут проигнорированы.

Parameters:
dir - директория для создания
attrs - необязательный список атрибутов файла для атомарного задания при создании директории
Returns:
директория
Throws:
UnsupportedOperationException - если массив содержит атрибут, который не может быть задан атомарно при создании директории
FileAlreadyExistsException - если директория не может быть создана, потому что файл с таким именем уже существует (необязательное конкретное исключение)
IOException - если произошла ошибка ввода-вывода или родительская директория не существует

createDirectories

public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException
Создает директорию, создавая все несуществующие родительские директории. В отличие от метода createDirectory, исключение не выбрасывается, если директория не может быть создана, потому что она уже существует.

Параметр attrs - необязательный список file-attributes для атомарного задания атрибутов при создании несуществующих директорий. Каждый атрибут идентифицируется по своему имени с помощью name. Если в массиве присутствует более одного атрибута с одинаковым именем, то все, кроме последнего, будут проигнорированы.

Если этот метод завершается неудачно, то это может произойти после создания некоторых, но не всех, родительских директорий.

Parameters:
dir - директория для создания
attrs - необязательный список атрибутов файла для атомарного задания при создании директории
Returns:
директория
Throws:
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).

Parameters:
dir - путь к каталогу, в котором следует создать файл
prefix - строка-префикс, используемая при генерации имени файла; может быть null
suffix - строка-суффикс, используемая при генерации имени файла; может быть null, в таком случае используется ".tmp"
attrs - необязательный список атрибутов файла для атомарного задания при создании файла
Returns:
путь к только что созданному файлу, которого не существовало до вызова этого метода
Throws:
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 — это каталог временных файлов.

Parameters:
prefix - строка-префикс, используемая при генерации имени файла; может быть null
suffix - строка-суффикс, используемая при генерации имени файла; может быть null, в таком случае используется ".tmp"
attrs - необязательный список атрибутов файла для атомарного задания при создании файла
Returns:
путь к только что созданному файлу, которого не существовало до вызова этого метода
Throws:
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. Если в массиве указано более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются.

Parameters:
dir - путь к каталогу, в котором следует создать каталог
prefix - строка-префикс, используемая при генерации имени каталога; может быть null
attrs - необязательный список атрибутов файла для атомарного задания при создании каталога
Returns:
путь к только что созданному каталогу, которого не существовало до вызова этого метода
Throws:
IllegalArgumentException - если префикс не может быть использован для генерации кандидатного имени каталога
UnsupportedOperationException - если массив содержит атрибут, который не может быть атомарно задан при создании каталога
IOException - если произошла ошибка ввода-вывода или dir не существует

createTempDirectory

public static Path createTempDirectory(String prefix, FileAttribute<?>... attrs) throws IOException
Создаёт новый каталог в стандартном каталоге временных файлов, используя заданный префикс для генерации его имени. Результирующий Path ассоциирован со стандартным FileSystem.

Этот метод работает точно так же, как и метод createTempDirectory(Path,String,FileAttribute[]) в случае, когда параметр dir — это каталог временных файлов.

Parameters:
prefix - строка-префикс, используемая при генерации имени каталога; может быть null
attrs - необязательный список атрибутов файла для атомарного задания при создании каталога
Returns:
путь к только что созданному каталогу, которого не существовало до вызова этого метода
Throws:
IllegalArgumentException - если префикс не может быть использован для генерации кандидатного имени каталога
UnsupportedOperationException - если массив содержит атрибут, который не может быть атомарно задан при создании каталога
IOException - если произошла ошибка ввода-вывода или каталог временных файлов не существует

createSymbolicLink

public static Path createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs) throws IOException
Создаёт символическую ссылку на целевой объект (необязательная операция).

Параметр target — это целевой объект ссылки. Он может быть абсолютным или относительным путём и не обязательно должен существовать. Если целевой путь является относительным, то операции над результатом ссылки будут относиться к пути самой ссылки.

Параметр attrs является необязательным списком attributes для атомарного задания при создании ссылки. Каждый атрибут идентифицируется по своему name. Если в массиве указано более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются.

Если символические ссылки поддерживаются, но подлежащий FileStore не поддерживает символические ссылки, то операция может завершиться с исключением IOException. Кроме того, на некоторых операционных системах может потребоваться запуск виртуальной машины Java с особыми привилегиями, чтобы создать символическую ссылку, в таком случае этот метод может выбросить исключение IOException.

Parameters:
link - путь к создаваемой символической ссылке
target - целевой объект символической ссылки
attrs - массив атрибутов для атомарного задания при создании символической ссылки
Returns:
путь к символической ссылке
Throws:
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 может включать следующие значения:

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 - если произошла ошибка ввода-вывода

переместить

public static Path move(Path source, Path target, CopyOption... options) throws IOException
Переместить или переименовать файл в целевой файл.

По умолчанию этот метод пытается переместить файл в целевой файл, прерываясь, если целевой файл существует, за исключением случаев, когда исходный и целевой файлы являются same файлом, в этом случае этот метод не имеет эффекта. Если файл является символической ссылкой, то перемещается сама символическая ссылка, а не целевой объект ссылки. Этот метод может быть вызван для перемещения пустого каталога. В некоторых реализациях каталог имеет записи для специальных файлов или ссылок, которые создаются при создании каталога. В таких реализациях каталог считается пустым, когда существуют только специальные записи. При вызове для перемещения каталога, который не пуст, каталог перемещается, если не требуется перемещение элементов в каталоге. Например, переименование каталога в том же FileStore обычно не требует перемещения элементов в каталоге. Когда для перемещения каталога требуется перемещение его элементов, этот метод завершается ошибкой (выбрасывая IOException). Для перемещения древовидной структуры файлов может потребоваться копирование, а не перемещение каталогов, и это можно сделать, используя метод copy в сочетании с вспомогательным методом Files.walkFileTree.

Параметр options может включать следующие опции:

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 - если произошла ошибка ввода-вывода

читатьСимволическуюСсылка

public static Path readSymbolicLink(Path link) throws IOException
Считывает целевой объект символической ссылки (необязательная операция).

Если файловая система поддерживает символические ссылки, то этот метод используется для считывания целевого объекта ссылки, прерываясь, если файл не является символической ссылкой. Целевой объект ссылки может не существовать. Возвращаемый Path объект будет связан с той же файловой системой, что и link.

Параметры:
link - путь к символической ссылке
Возвращает:
объект Path, представляющий целевой объект ссылки
Исключения:
UnsupportedOperationException - если реализация не поддерживает символические ссылки
NotLinkException - если целевой объект по каким-либо причинам не может быть прочитан, так как файл не является символической ссылкой (возможно, специфическое исключение)
IOException - если произошла ошибка ввода-вывода

получитьХранилищеФайлов

public static FileStore getFileStore(Path path) throws IOException
Возвращает FileStore, представляющий хранилище файлов, в котором находится файл.

После получения ссылки на FileStore, конкретная реализация определяет, будут ли операции с возвращённым FileStore объектом или с FileStoreAttributeView объектами, полученными от него, зависеть от существования файла. В частности, поведение не определено в случае удаления или перемещения файла в другое хранилище файлов.

Параметры:
path - путь к файлу
Возвращает:
хранилище файлов, где хранится файл
Исключения:
IOException - если произошла ошибка ввода-вывода

являютсяОднимФайлом

public static boolean isSameFile(Path path, Path path2) throws IOException
Проверяет, указывают ли два пути на один и тот же файл.

Если оба Path объекта equal, то этот метод возвращает true, не проверяя, существует ли файл. Если два Path объекта связаны с разными поставщиками, этот метод возвращает false. В противном случае этот метод проверяет, указывают ли оба Path объекта на один и тот же файл, и в зависимости от реализации, может потребоваться открыть или получить доступ к обоим файлам.

Если файловая система и файлы остаются неизменными, этот метод реализует отношение эквивалентности для объектов Paths.

  • Он является рефлексивным: для Path f, isSameFile(f,f) должен возвращать true.
  • Он является симметричным: для двух Paths f и g, isSameFile(f,g) будет равно isSameFile(g,f).
  • Он является транзитивным: для трёх Paths f, g и h, если isSameFile(f,g) возвращает true и isSameFile(g,h) возвращает true, то isSameFile(f,h) вернёт true.
Параметры:
path - один путь к файлу
path2 - другой путь
Возвращает:
true, если и только если оба пути указывают на один и тот же файл
Исключения:
IOException - если произошла ошибка ввода-вывода
См. также:
  • BasicFileAttributes.fileKey()

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 без проверки существования файла.

Parameters:
path - путь к первому файлу
path2 - путь ко второму файлу
Returns:
позиция первого несовпадения или -1L, если несовпадений нет
Throws:
IOException - если произошла ошибка ввода-вывода
Since:
12

isHidden

public static boolean isHidden(Path path) throws IOException
Определяет, является ли файл скрытым.
API Note:
Точное определение скрытого файла зависит от платформы или поставщика. Например, в UNIX-системах файл считается скрытым, если его имя начинается с точки ('.'). В Windows файл считается скрытым, если установлен атрибут DOS hidden.

В зависимости от реализации для определения скрытости файла может потребоваться доступ к файловой системе.

Parameters:
path - путь к файлу для проверки
Returns:
true, если файл считается скрытым
Throws:
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.

Parameters:
path - путь к файлу для определения типа
Returns:
Тип содержимого файла или null, если тип содержимого определить невозможно
Throws:
IOException - если произошла ошибка ввода-вывода
External Specifications
  • RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies

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();
        :
    }
Type Parameters:
V - Тип FileAttributeView
Parameters:
path - путь к файлу
type - объект Class, соответствующий представлению атрибутов файла
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
представление атрибутов файла указанного типа или 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);
В альтернативном случае предположим, что мы хотим прочитать POSIX-атрибуты файла без следования символическим ссылкам:
    PosixFileAttributes attrs =
        Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
Type Parameters:
A - Тип BasicFileAttributes
Parameters:
path - путь к файлу
type - тип атрибутов файла, которые требуется прочитать
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
атрибуты файла
Throws:
UnsupportedOperationException - если атрибуты заданного типа не поддерживаются
IOException - если произошла ошибка ввода-вывода

Установить атрибут

public static Path setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException
Устанавливает значение атрибута файла.

Параметр attribute определяет атрибут для установки и имеет вид:

[имя_представления:]имя_атрибута
где квадратные скобки [...] обозначают необязательный компонент, а символ ':' обозначает себя.

имя_представления — это name представления FileAttributeView, которое идентифицирует набор атрибутов файла. Если не указано, то по умолчанию используется "basic", имя представления атрибутов файла, идентифицирующего базовый набор атрибутов файлов, общий для многих файловых систем. имя_атрибута — это имя атрибута в наборе.

Массив options может использоваться для указания обработки символических ссылок в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и атрибут файла конечного целевого объекта ссылки устанавливается. Если присутствует параметр NOFOLLOW_LINKS, то символические ссылки не отслеживаются.

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

    Path path = ...
    Files.setAttribute(path, "dos:hidden", true);
Параметры:
path - путь к файлу
attribute - атрибут для установки
value - значение атрибута
options - параметры, указывающие, как обрабатываются символические ссылки
Возвращает:
указанный путь
Исключения:
UnsupportedOperationException - если представление атрибутов недоступно
IllegalArgumentException - если имя атрибута не указано или не распознано, или значение атрибута имеет правильный тип, но неподходящее значение
ClassCastException - если значение атрибута не является ожидаемого типа или является коллекцией, содержащей элементы, не являющиеся ожидаемого типа
IOException - если произошла ошибка ввода-вывода

Получить атрибут

public static Object getAttribute(Path path, String attribute, LinkOption... options) throws IOException
Считывает значение атрибута файла.

Параметр attribute определяет атрибут для чтения и имеет вид:

[имя_представления:]имя_атрибута
где квадратные скобки [...] обозначают необязательный компонент, а символ ':' обозначает себя.

имя_представления — это name представления FileAttributeView, которое идентифицирует набор атрибутов файла. Если не указано, то по умолчанию используется "basic", имя представления атрибутов файла, идентифицирующего базовый набор атрибутов файлов, общий для многих файловых систем. имя_атрибута — это имя атрибута.

Массив options может использоваться для указания обработки символических ссылок в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и атрибут файла конечного целевого объекта ссылки считывается. Если присутствует параметр NOFOLLOW_LINKS, то символические ссылки не отслеживаются.

Пример использования: Предположим, нам нужен идентификатор пользователя владельца файла на системе, которая поддерживает представление "unix":

    Path path = ...
    int uid = (Integer)Files.getAttribute(path, "unix:uid");
Параметры:
path - путь к файлу
attribute - атрибут для чтения
options - параметры, указывающие, как обрабатываются символические ссылки
Возвращает:
значение атрибута
Исключения:
UnsupportedOperationException - если представление атрибутов недоступно
IllegalArgumentException - если имя атрибута не указано или не распознано
IOException - если произошла ошибка ввода-вывода

читатьАтрибуты

public static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException
Считывает набор атрибутов файла как операцию по пакетной обработке.

Параметр attributes определяет атрибуты для чтения и имеет вид:

[имя_представления:]список_атрибутов
где квадратные скобки [...] обозначают необязательный компонент, а символ ':' обозначает себя.

имя_представления — это name представления FileAttributeView, которое идентифицирует набор атрибутов файла. Если не указано, то по умолчанию используется "basic", имя представления атрибутов файла, идентифицирующего базовый набор атрибутов файлов, общий для многих файловых систем.

Компонент список_атрибутов — это список через запятую одного или нескольких имен атрибутов для чтения. Если список содержит значение "*", то все атрибуты считываются. Атрибуты, которые не поддерживаются, игнорируются и не будут присутствовать в возвращаемой карте. Реализация может определять, считываются ли все атрибуты как атомная операция относительно других операций с файловой системой.

Следующие примеры демонстрируют возможные значения для параметра 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 - если произошла ошибка ввода-вывода

Получить права POSIX файла

public static Set<PosixFilePermission> getPosixFilePermissions(Path path, LinkOption... options) throws IOException
Возвращает права POSIX файла.

Параметр path связан с FileSystem, который поддерживает PosixFileAttributeView. Это представление атрибутов предоставляет доступ к атрибутам файлов, обычно связанным с файлами в файловых системах, используемых операционными системами, которые реализуют семейство стандартов Portable Operating System Interface (POSIX).

Массив options может использоваться для указания обработки символических ссылок в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и атрибут файла конечного целевого объекта ссылки считывается. Если присутствует параметр NOFOLLOW_LINKS, то символические ссылки не отслеживаются.

Параметры:
path - путь к файлу
options - параметры, указывающие, как обрабатываются символические ссылки
Возвращает:
права файла
Исключения:
UnsupportedOperationException - если связанная файловая система не поддерживает PosixFileAttributeView
IOException - если произошла ошибка ввода-вывода

Установить права POSIX файла

public static Path setPosixFilePermissions(Path path, Set<PosixFilePermission> perms) throws IOException
Устанавливает права POSIX файла.

Параметр 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. Это представление атрибута файла предоставляет доступ к атрибуту файла, являющемуся владельцем файла.

Parameters:
path - Путь к файлу
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
Принципал пользователя, представляющий владельца файла
Throws:
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);
Parameters:
path - Путь к файлу
owner - Новый владелец файла
Returns:
Указанный путь
Throws:
UnsupportedOperationException - если связанная файловая система не поддерживает FileOwnerAttributeView
IOException - если произошла ошибка ввода-вывода
См. также:
  • FileSystem.getUserPrincipalLookupService()
  • UserPrincipalLookupService

isSymbolicLink

public static boolean isSymbolicLink(Path path)
Проверяет, является ли файл символической ссылкой.

Если требуется отличить ошибку ввода-вывода от случая, когда файл не является символической ссылкой, то атрибуты файла можно прочитать с помощью метода readAttributes, а тип файла проверить с помощью метода BasicFileAttributes.isSymbolicLink().

Parameters:
path - Путь к файлу
Returns:
true, если файл является символической ссылкой; false, если файл не существует, не является символической ссылкой или невозможно определить, является ли файл символической ссылкой.

isDirectory

public static boolean isDirectory(Path path, LinkOption... options)
Проверяет, является ли файл каталогом.

Массив options может использоваться для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и атрибут файла конечного объекта ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.

Если требуется отличить ошибку ввода-вывода от случая, когда файл не является каталогом, то атрибуты файла можно прочитать с помощью метода readAttributes, а тип файла проверить с помощью метода BasicFileAttributes.isDirectory().

Parameters:
path - путь к файлу для проверки
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
true, если файл является каталогом; false, если файл не существует, не является каталогом или невозможно определить, является ли файл каталогом.

isRegularFile

public static boolean isRegularFile(Path path, LinkOption... options)
Проверяет, является ли файл обычным файлом с непрозрачным содержимым.

Массив options может использоваться для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и атрибут файла конечного объекта ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.

Если требуется отличить ошибку ввода-вывода от случая, когда файл не является обычным файлом, то атрибуты файла можно прочитать с помощью метода readAttributes, а тип файла проверить с помощью метода BasicFileAttributes.isRegularFile().

Parameters:
path - путь к файлу
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
true, если файл является обычным файлом; false, если файл не существует, не является обычным файлом или невозможно определить, является ли файл обычным файлом.

getLastModifiedTime

public static FileTime getLastModifiedTime(Path path, LinkOption... options) throws IOException
Возвращает время последнего изменения файла.

Массив options может использоваться для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются, и атрибут файла конечного объекта ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.

Parameters:
path - путь к файлу
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
объект FileTime, представляющий время последнего изменения файла, или значение по умолчанию, если файловая система не поддерживает метку времени последнего изменения
Throws:
IOException - если произошла ошибка ввода-вывода
См. также:
  • BasicFileAttributes.lastModifiedTime()

setLastModifiedTime

public static Path setLastModifiedTime(Path path, FileTime time) throws IOException
Обновляет атрибут времени последнего изменения файла. Время файла преобразуется в эпоху и точность, поддерживаемые файловой системой. Преобразование с более высокой точности в более низкую приводит к потере точности. Поведение этого метода при попытке установить время последнего изменения, когда оно не поддерживается файловой системой или находится вне диапазона, поддерживаемого базовым хранилищем, не определено. Может или не может завершиться ошибкой, выбросив IOException.

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

    Path path = ...
    FileTime now = FileTime.fromMillis(System.currentTimeMillis());
    Files.setLastModifiedTime(path, now);
Parameters:
path - путь к файлу
time - новое время последнего изменения
Returns:
указанный путь
Throws:
IOException - если произошла ошибка ввода-вывода
См. также:
  • BasicFileAttributeView.setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime)

size

public static long size(Path path) throws IOException
Возвращает размер файла (в байтах). Размер может отличаться от фактического размера на файловой системе из-за сжатия, поддержки разреженных файлов или других причин. Размер файлов, которые не являются regular файлами, зависит от реализации и поэтому не определен.
Parameters:
path - путь к файлу
Returns:
размер файла в байтах
Throws:
IOException - если произошла ошибка ввода-вывода
См. также:
  • BasicFileAttributes.size()

exists

public static boolean exists(Path path, LinkOption... options)
Проверяет, существует ли файл.

Параметр options может быть использован для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются. Если опция NOFOLLOW_LINKS присутствует, то символические ссылки не отслеживаются.

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

Parameters:
path - путь к файлу для проверки
options - опции, указывающие, как обрабатывать символические ссылки
Returns:
true, если файл существует; false, если файл не существует или его существование нельзя определить.
См. также:
  • notExists(java.nio.file.Path, java.nio.file.LinkOption...)
  • FileSystemProvider.checkAccess(java.nio.file.Path, java.nio.file.AccessMode...)

неСуществует

public static boolean notExists(Path path, LinkOption... options)
Проверяет, не существует ли файл по указанному пути. Этот метод предназначен для случаев, когда требуется выполнить действие, если подтверждено, что файла не существует.

Параметр options может быть использован для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки следуют. Если опция NOFOLLOW_LINKS присутствует, то символические ссылки не следуют.

Обратите внимание, что этот метод не является дополнением к методу exists. В тех случаях, когда невозможно определить, существует файл или нет, оба метода возвращают false. Как и в методе exists, результат этого метода немедленно устаревает. Если этот метод указывает, что файл существует, нет гарантии, что последующая попытка создания файла будет успешной. При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.

Параметры:
path - путь к файлу для проверки
options - опции, указывающие, как обрабатывать символические ссылки
Возвращает:
true, если файла не существует; false, если файл существует или его существование нельзя определить

читаемый

public static boolean isReadable(Path path)
Проверяет, доступен ли файл для чтения. Этот метод проверяет, существует ли файл и обладает ли эта виртуальная машина Java соответствующими привилегиями, которые позволили бы ей открыть файл для чтения. В зависимости от реализации, этот метод может потребовать чтения разрешений на чтение файла, списков управления доступом или других атрибутов файла для проверки эффективного доступа к файлу. Следовательно, этот метод может быть не атомарным по отношению к другим операциям с файловой системой.

Обратите внимание, что результат этого метода немедленно устаревает, нет гарантии, что последующая попытка открыть файл для чтения будет успешной (или даже что он будет обращаться к тому же файлу). При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.

Параметры:
path - путь к файлу для проверки
Возвращает:
true, если файл существует и доступен для чтения; false, если файл не существует, доступ для чтения был бы запрещен из-за недостаточных привилегий виртуальной машины Java или доступ не может быть определен

записываемый

public static boolean isWritable(Path path)
Проверяет, доступен ли файл для записи. Этот метод проверяет, существует ли файл и обладает ли эта виртуальная машина Java соответствующими привилегиями, которые позволили бы ей открыть файл для записи. В зависимости от реализации, этот метод может потребовать чтения разрешений на чтение файла, списков управления доступом или других атрибутов файла для проверки эффективного доступа к файлу. Следовательно, этот метод может быть не атомарным по отношению к другим операциям с файловой системой.

Обратите внимание, что результат этого метода немедленно устаревает, нет гарантии, что последующая попытка открыть файл для записи будет успешной (или даже что он будет обращаться к тому же файлу). При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.

Параметры:
path - путь к файлу для проверки
Возвращает:
true, если файл существует и доступен для записи; false, если файл не существует, доступ для записи был бы запрещен из-за недостаточных привилегий виртуальной машины Java или доступ не может быть определен

исполняемый

public static boolean isExecutable(Path path)
Проверяет, доступен ли файл для выполнения. Этот метод проверяет, существует ли файл и обладает ли эта виртуальная машина Java соответствующими привилегиями для execute файла. Семантика может отличаться при проверке доступа к каталогу. Например, в системах UNIX проверка доступа на выполнение проверяет, имеет ли виртуальная машина Java разрешение на поиск в каталоге для доступа к файлам или подкаталогам.

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

Обратите внимание, что результат этого метода немедленно устаревает, нет гарантии, что последующая попытка выполнения файла будет успешной (или даже что он будет обращаться к тому же файлу). При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.

Параметры:
path - путь к файлу для проверки
Возвращает:
true, если файл существует и доступен для выполнения; false, если файл не существует, доступ для выполнения был бы запрещен из-за недостаточных привилегий виртуальной машины Java или доступ не может быть определен

обходДереваФайлов

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 - если метод посетителя вызывает ошибку ввода-вывода

обходДереваФайлов

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

Parameters:
path - путь к файлу
cs - набор символов для декодирования
Returns:
новый буферизованный читатель с заданным размером буфера для чтения текста из файла
Throws:
IOException - если при открытии файла произошла ошибка ввода-вывода
See Also:
  • readAllLines(java.nio.file.Path, java.nio.charset.Charset)

newBufferedReader

public static BufferedReader newBufferedReader(Path path) throws IOException
Открывает файл для чтения, возвращая BufferedReader для эффективного чтения текста из файла. Байты из файла декодируются в символы с использованием набора символов UTF-8 charset.

Этот метод работает так, как будто вызов эквивалентен оценке выражения:

Files.newBufferedReader(path, StandardCharsets.UTF_8)
Parameters:
path - путь к файлу
Returns:
новый буферизованный читатель с заданным размером буфера для чтения текста из файла
Throws:
IOException - если при открытии файла произошла ошибка ввода-вывода
Since:
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, вызванная ошибкой кодирования (неотображаемый символ или неверный вход), может быть выброшена при записи, очистке или закрытии буферизованного записывателя.

Parameters:
path - путь к файлу
cs - набор символов для кодирования
options - опции, определяющие, как файл открывается
Returns:
новый буферизованный записыватель с заданным размером буфера для записи текста в файл
Throws:
IllegalArgumentException - если options содержит недопустимое сочетание опций
IOException - если при открытии или создании файла произошла ошибка ввода-вывода
UnsupportedOperationException - если указана неподдерживаемая опция
FileAlreadyExistsException - Если файл с таким именем уже существует, и указана опция CREATE_NEW (опциональная специфическая ошибка)
See Also:
  • write(Path,Iterable,Charset,OpenOption[])

newBufferedWriter

public static BufferedWriter newBufferedWriter(Path path, OpenOption... options) throws IOException
Открывает или создаёт файл для записи, возвращая BufferedWriter для эффективной записи текста в файл. Текст кодируется в байты для записи с помощью набора символов UTF-8 charset.

Этот метод работает так, как будто вызов эквивалентен оценке выражения:

Files.newBufferedWriter(path, StandardCharsets.UTF_8, options)
Parameters:
path - путь к файлу
options - опции, определяющие, как файл открывается
Returns:
новый буферизованный записыватель с заданным размером буфера для записи текста в файл
Throws:
IllegalArgumentException - если options содержит недопустимое сочетание опций
IOException - если при открытии или создании файла произошла ошибка ввода-вывода
UnsupportedOperationException - если указана неподдерживаемая опция
FileAlreadyExistsException - Если файл с таким именем уже существует, и указана опция CREATE_NEW (опциональная специфическая ошибка)
Since:
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);
    }
Parameters:
in - поток ввода для чтения
target - путь к файлу
options - опции, определяющие, как выполнить копирование
Returns:
количество прочитанных или записанных байтов
Throws:
IOException - если произошла ошибка ввода-вывода при чтении или записи
FileAlreadyExistsException - если целевой файл существует, но не может быть заменён, потому что опция REPLACE_EXISTING не указана (опциональная специфическая ошибка)
DirectoryNotEmptyException - опция REPLACE_EXISTING указана, но файл не может быть заменён, потому что он является непустым каталогом (опциональная специфическая ошибка)
UnsupportedOperationException - если options содержит неподдерживаемую опцию копирования

copy

public static long copy(Path source, OutputStream out) throws IOException
Копирует все байты из файла в поток вывода.

Если при чтении из файла или записи в поток вывода произошла ошибка ввода-вывода, она может произойти после чтения или записи некоторых байтов. Следовательно, поток вывода может быть в несогласованном состоянии. Сильно рекомендуется немедленно закрыть поток вывода, если произошла ошибка ввода-вывода.

Этот метод может блокироваться неопределённо долго, записывая в поток вывода (или читая из файла). Поведение в случае, если поток вывода закрыт асинхронно, или поток прерван во время копирования, зависит от конкретной реализации потока вывода и файловой системы и поэтому не специфицировано.

Обратите внимание, что если заданный поток вывода является Flushable, то его метод flush может потребоваться вызвать после завершения этого метода, чтобы очистить любой буферизованный вывод.

Parameters:
source - путь к файлу
out - поток вывода для записи
Returns:
количество прочитанных или записанных байтов
Throws:
IOException - если произошла ошибка ввода-вывода при чтении или записи

readAllBytes

public static byte[] readAllBytes(Path path) throws IOException
Читает все байты из файла. Метод гарантирует, что файл закрывается, когда все байты прочитаны или произошла ошибка ввода-вывода или другая ошибка выполнения.

Обратите внимание, что этот метод предназначен для простых случаев, когда удобно прочитать все байты в массив байтов. Он не предназначен для чтения больших файлов.

Parameters:
path - путь к файлу
Returns:
массив байтов, содержащий прочитанные из файла байты
Throws:
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 - если при чтении из файла произошла ошибка ввода-вывода или прочитанная последовательность байтов имеет неправильный формат или не может быть преобразована
См. также:
  • newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)

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

ЗаписьСтроки

public static Path writeString(Path path, CharSequence csq, OpenOption... options) throws IOException
Записать CharSequence в файл. Символы кодируются в байты с использованием UTF-8 charset.

Этот метод эквивалентен: writeString(path, csq, StandardCharsets.UTF_8, options).

Параметры:
path - путь к файлу
csq - CharSequence, который необходимо записать
options - опции, определяющие, как открыть файл
Возвращает:
путь
Исключения:
IllegalArgumentException - если options содержит недопустимое сочетание опций
IOException - если при записи в файл или создании файла произошла ошибка ввода-вывода, или текст не может быть закодирован с использованием UTF-8
UnsupportedOperationException - если указана неподдерживаемая опция
С:
11

ЗаписьСтроки

public static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption... options) throws IOException
Записать CharSequence в файл. Символы кодируются в байты с использованием указанного кодирования.

Все символы записываются как есть, включая разделители строк в последовательности символов. Дополнительные символы не добавляются.

Параметр options определяет, как файл создается или открывается. Если опции отсутствуют, этот метод работает так, как будто присутствуют опции CREATE, TRUNCATE_EXISTING и WRITE. Другими словами, он открывает файл для записи, создавая файл, если он не существует, или первоначально обрезая существующий regular-file до размера 0.

Параметры:
path - путь к файлу
csq - CharSequence, который необходимо записать
cs - используемое кодирование
options - опции, определяющие, как открыть файл
Возвращает:
путь
Исключения:
IllegalArgumentException - если options содержит недопустимое сочетание опций
IOException - если при записи в файл или создании файла произошла ошибка ввода-вывода, или текст не может быть закодирован с использованием указанного кодирования
UnsupportedOperationException - если указана неподдерживаемая опция
С:
11

список

public static Stream<Path> list(Path dir) throws IOException
Возвращает лениво заполненный Stream, элементами которого являются записи в каталоге. Перечисление не рекурсивное.

Элементами потока являются объекты Path, полученные как если бы путем resolving имени записи каталога по отношению к dir. Некоторые файловые системы поддерживают специальные ссылки на сам каталог и родительский каталог каталога. Записи, представляющие эти ссылки, не включаются.

Поток слабо согласован. Он потокобезопасен, но не блокирует каталог во время итерации, поэтому он может (или не может) отражать обновления каталога, произошедшие после возврата из этого метода.

Возвращаемый поток содержит ссылку на открытый каталог. Каталог закрывается при закрытии потока.

Обработка закрытого потока происходит так, как если бы был достигнут конец потока. Из-за предварительного чтения один или несколько элементов могут быть возвращены после закрытия потока.

Если при доступе к каталогу после возвращения из этого метода вызывается IOException, он оборачивается в UncheckedIOException, который будет сгенерирован методом, вызвавшим доступ.

Примечание API:
Этот метод должен использоваться внутри оператора try-with-resources или подобной управляющей структуры, чтобы гарантировать, что открытый каталог потока будет закрыт немедленно после завершения операций потока.
Параметры:
dir - путь к каталогу
Возвращает:
Поток, описывающий содержимое каталога
Исключения:
NotDirectoryException - если файл не может быть открыт по другим причинам, так как он не является каталогом (необязательное специфическое исключение)
IOException - если при открытии каталога произошла ошибка ввода-вывода
С:
1.8
См. также:
  • newDirectoryStream(Path)

Проход

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
Возвращает поток, который лениво заполняется объектами, полученными при обходе дерева файлов, корнем которого является указанный начальный файл. Дерево файлов обходится в глубину, при этом директория посещается до элементов в этой директории. Элементы в потоке являются Path объектами, которые получаются так, как будто путем resolving относительного пути относительно start.

Этот метод работает так, как если бы вызов был эквивалентен оценке выражения:

Files.walk(start, Integer.MAX_VALUE, options)
В других словах, он посещает все уровни дерева файлов.

Возвращаемый поток содержит ссылки на одну или несколько открытых директорий. Директории закрываются при закрытии потока.

API Note:
Этот метод должен использоваться в блоке try-with-resources или аналогичной управляющей структуре, чтобы гарантировать, что открытые директории потока будут закрыты сразу после завершения операций потока.
Parameters:
start - начальный файл
options - параметры настройки обхода
Returns:
поток Stream объектов Path
Throws:
IOException - если при доступе к начальному файлу произошла ошибка ввода-вывода.
Since:
1.8
See Also:
  • walk(Path, int, FileVisitOption...)

find

public static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path, BasicFileAttributes> matcher, FileVisitOption... options) throws IOException
Возвращает поток, который лениво заполняется объектами, полученными при поиске файлов в дереве файлов, корнем которого является указанный начальный файл.

Этот метод обходит дерево файлов точно так же, как и метод walk. Для каждого найденного файла вызывается переданный BiPredicate с его Path и BasicFileAttributes. Объект Path получается, как будто путем resolving относительного пути относительно start и включается в возвращаемый поток Stream только если BiPredicate возвращает true. В сравнении с вызовом filter на потоке, возвращаемом методом walk, этот метод может быть более эффективным, избегая излишнего получения BasicFileAttributes.

Возвращаемый поток содержит ссылки на одну или несколько открытых директорий. Директории закрываются при закрытии потока.

Если при доступе к директории после возврата из этого метода выбрасывается IOException, она оборачивается в UncheckedIOException, который будет сгенерирован в вызвавшем методе.

API Note:
Этот метод должен использоваться в блоке try-with-resources или аналогичной управляющей структуре, чтобы гарантировать, что открытые директории потока будут закрыты сразу после завершения операций потока.
Parameters:
start - начальный файл
maxDepth - максимальное количество уровней директорий для поиска
matcher - функция, используемая для определения, должен ли файл включаться в возвращаемый поток
options - параметры настройки обхода
Returns:
поток Stream объектов Path
Throws:
IllegalArgumentException - если параметр maxDepth отрицательный
IOException - если при доступе к начальному файлу произошла ошибка ввода-вывода.
Since:
1.8
See Also:
  • walk(Path, int, FileVisitOption...)

lines

public static Stream<String> lines(Path path, Charset cs) throws IOException
Считывает все строки из файла в виде потока. В отличие от readAllLines, этот метод не считывает все строки в массив, а вместо этого заполняет их лениво по мере потребления потока.

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

Возвращаемый поток содержит ссылку на открытый файл. Файл закрывается при закрытии потока.

Содержимое файла не должно изменяться во время выполнения терминальной операции потока. В противном случае результат терминальной операции потока является неопределенным.

После возврата этого метода любая последующая ошибка ввода-вывода, возникающая при чтении из файла или при чтении некорректной или неотображаемой последовательности байтов, оборачивается в UncheckedIOException, который будет сгенерирован в вызвавшем методе Stream, вызвавшим чтение. В случае, если при закрытии файла возникает IOException, он также оборачивается как UncheckedIOException.

API Note:
Этот метод должен использоваться в блоке try-with-resources или аналогичной управляющей структуре, чтобы гарантировать, что открытый файл потока будет закрыт сразу после завершения операций потока.
Implementation Note:
Это реализация поддерживает хорошую параллельную производительность потоков для стандартных наборов символов UTF-8, US-ASCII и ISO-8859-1. Такие оптимальные для строк наборы символов обладают свойством, что закодированные байты символа новой строки ('\n') или возврата каретки ('\r') эффективно идентифицируются среди других закодированных символов при случайном доступе к байтам файла.

Для наборов символов, которые не являются оптимальными для строк, разделитель потока-источника имеет плохие свойства разделения, аналогичные разделителю, связанному с итератором или связанному с потоком, возвращаемым из BufferedReader.lines(). Плохие свойства разделения могут привести к плохой параллельной производительности потока.

Для оптимальных для строк наборов символов разделитель потока-источника имеет хорошие свойства разделения, предполагая, что файл содержит регулярную последовательность строк. Хорошие свойства разделения могут привести к хорошей параллельной производительности потока. Разделитель для оптимального для строк набора символов использует свойства набора символов (символ новой строки или возврат каретки, который эффективно идентифицируется), таким образом, при разделении он может примерно разделить количество обработанных строк пополам.

Parameters:
path - путь к файлу
cs - набор символов для декодирования
Returns:
строки из файла в виде потока
Throws:
IOException - если при открытии файла произошла ошибка ввода-вывода
Since:
1.8
See Also:
  • readAllLines(Path, Charset)
  • newBufferedReader(Path, Charset)
  • BufferedReader.lines()

lines

public static Stream<String> lines(Path path) throws IOException
Считывает все строки из файла в виде потока. Байты из файла декодируются в символы с использованием набора символов UTF-8 charset.

Возвращаемый поток содержит ссылку на открытый файл. Файл закрывается при закрытии потока.

Содержимое файла не должно изменяться во время выполнения терминальной операции потока. В противном случае результат терминальной операции потока является неопределенным.

Этот метод работает так, как если бы вызов был эквивалентен оценке выражения:

Files.lines(path, StandardCharsets.UTF_8)
API Note:
Этот метод должен использоваться в блоке try-with-resources или аналогичной управляющей структуре, чтобы гарантировать, что открытый файл потока будет закрыт сразу после завершения операций потока.
Parameters:
path - путь к файлу
Returns:
строки из файла в виде потока
Throws:
IOException - если при открытии файла произошла ошибка ввода-вывода
Since:
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/file/Files.html

Spec-Zone.ru

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