Файлы класса
public final class Files extends Object
В большинстве случаев методы, определенные здесь, делегируют связанному поставщику файловой системы для выполнения операций с файлами.
- Since:
- 1.7
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static long |
copy |
Копирует все байты из входного потока в файл. |
static long |
copy |
Копирует все байты из файла в выходной поток. |
static Path |
copy |
Копирует файл в целевой файл. |
static Path |
createDirectories |
Создаёт директорию, предварительно создавая все несуществующие родительские директории. |
static Path |
createDirectory |
Создаёт новую директорию. |
static Path |
createFile |
Создаёт новый пустой файл, если файл с таким именем уже существует, происходит ошибка. |
static Path |
createLink |
Создаёт новую ссылку (запись в каталоге) для существующего файла (необязательная операция). |
static Path |
createSymbolicLink |
Создаёт символическую ссылку на целевой объект (необязательная операция). |
static Path |
createTempDirectory |
Создаёт новую директорию в стандартном каталоге временных файлов, используя заданный префикс для генерации имени. |
static Path |
createTempDirectory |
Создаёт новую директорию в указанной директории, используя заданный префикс для генерации имени. |
static Path |
createTempFile |
Создаёт пустой файл в стандартном каталоге временных файлов, используя заданный префикс и суффикс для генерации имени. |
static Path |
createTempFile |
Создаёт новый пустой файл в указанной директории, используя заданные префикс и суффикс для генерации имени. |
static void |
delete |
Удаляет файл. |
static boolean |
deleteIfExists |
Удаляет файл, если он существует. |
static boolean |
exists |
Проверяет существование файла. |
static Stream |
find |
Возвращает Stream, который лениво заполняется
Path, выполняя поиск файлов в дереве файлов, корнем которого является заданный начальный файл. |
static Object |
getAttribute |
Считывает значение атрибута файла. |
static <V extends FileAttributeView> |
getFileAttributeView |
Возвращает представление атрибута файла заданного типа. |
static FileStore |
getFileStore |
Возвращает FileStore, представляющий хранилище файлов, где расположен файл. |
static FileTime |
getLastModifiedTime |
Возвращает время последней модификации файла. |
static UserPrincipal |
getOwner |
Возвращает владельца файла. |
static Set |
getPosixFilePermissions |
Возвращает разрешения POSIX для файла. |
static boolean |
isDirectory |
Проверяет, является ли файл директорией. |
static boolean |
isExecutable |
Проверяет, исполняемый ли файл. |
static boolean |
isHidden |
Определяет, скрыт ли файл. |
static boolean |
isReadable |
Проверяет, доступен ли файл для чтения. |
static boolean |
isRegularFile |
Проверяет, является ли файл обычным файлом с непрозрачным содержимым. |
static boolean |
isSameFile |
Проверяет, указывают ли два пути на один и тот же файл. |
static boolean |
isSymbolicLink |
Проверяет, является ли файл символической ссылкой. |
static boolean |
isWritable |
Проверяет, доступен ли файл для записи. |
static Stream |
lines |
Считывает все строки из файла как Stream. |
static Stream |
lines |
Считывает все строки из файла как Stream. |
static Stream |
list |
Возвращает лениво заполненную Stream, элементами которой являются записи в каталоге. |
static long |
mismatch |
Находит и возвращает позицию первого несовпадающего байта в содержимом двух файлов, или -1L, если несоответствий нет. |
static Path |
move |
Перемещает или переименовывает файл в целевой файл. |
static BufferedReader |
newBufferedReader |
Открывает файл для чтения, возвращая BufferedReader для эффективного чтения текста из файла. |
static BufferedReader |
newBufferedReader |
Открывает файл для чтения, возвращая BufferedReader, который может использоваться для эффективного чтения текста из файла. |
static BufferedWriter |
newBufferedWriter |
Открывает или создаёт файл для записи, возвращая BufferedWriter, который может использоваться для записи текста в файл эффективно. |
static BufferedWriter |
newBufferedWriter |
Открывает или создаёт файл для записи, возвращая BufferedWriter для записи текста в файл эффективно. |
static SeekableByteChannel |
newByteChannel |
Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу. |
static SeekableByteChannel |
newByteChannel |
Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу. |
static DirectoryStream |
newDirectoryStream |
Открывает директорию, возвращая DirectoryStream для перебора всех записей в директории. |
static DirectoryStream |
newDirectoryStream |
Открывает директорию, возвращая DirectoryStream для перебора записей в каталоге. |
static DirectoryStream |
newDirectoryStream |
Открывает директорию, возвращая DirectoryStream для перебора записей в каталоге. |
static InputStream |
newInputStream |
Открывает файл, возвращая входной поток для чтения из файла. |
static OutputStream |
newOutputStream |
Открывает или создаёт файл, возвращая выходной поток для записи байтов в файл. |
static boolean |
notExists |
Проверяет, не существует ли файл по этому пути. |
static String |
probeContentType |
Определяет тип содержимого файла. |
static byte[] |
readAllBytes |
Считывает все байты из файла. |
static List |
readAllLines |
Считывает все строки из файла. |
static List |
readAllLines |
Считывает все строки из файла. |
static <A extends BasicFileAttributes> |
readAttributes |
Считывает атрибуты файла как операцию по пакетной обработке. |
static Map |
readAttributes |
Считывает набор атрибутов файла как операцию по пакетной обработке. |
static String |
readString |
|
static String |
readString |
Считывает все символы из файла в строку, декодируя байты в символы с использованием указанного кодирования. |
static Path |
readSymbolicLink |
Считывает целевой объект символической ссылки (необязательная операция). |
static Path |
setAttribute |
Устанавливает значение атрибута файла. |
static Path |
setLastModifiedTime |
Обновляет время последней модификации файла. |
static Path |
setOwner |
Обновляет владельца файла. |
static Path |
setPosixFilePermissions |
Устанавливает разрешения POSIX для файла. |
static long |
size |
Возвращает размер файла (в байтах). |
static Stream |
walk |
Возвращает Stream, который заполняется лениво
Path, проходя по дереву файлов, начиная с указанного файла. |
static Stream |
walk |
Возвращает Stream, который заполняется лениво
Path, проходя по дереву файлов, начиная с указанного файла. |
static Path |
walkFileTree |
Проходит по дереву файлов. |
static Path |
walkFileTree |
Проходит по дереву файлов. |
static Path |
write |
Записывает байты в файл. |
static Path |
write |
Записывает строки текста в файл. |
static Path |
write |
Записывает строки текста в файл. |
static Path |
writeString |
Записывает CharSequence в файл. |
static Path |
writeString |
Записывает CharSequence в файл. |
Подробное описание методов
newInputStream
public static InputStream newInputStream(Path path, OpenOption... options) throws IOException
mark или reset. Поток безопасен для доступа нескольких потоков одновременно. Чтение начинается с начала файла. Будет ли возвращаемый поток асинхронно закрываемым и/или прерывимым, сильно зависит от поставщика файловой системы и поэтому не оговаривается. Параметр options определяет, как открывается файл. Если опций нет, то это эквивалентно открытию файла с опцией READ. Кроме опции
READ, реализация может также поддерживать дополнительные опции, специфичные для реализации.
- Параметры:
-
path- путь к открываемому файлу -
options- опции, определяющие, как открывается файл - Возвращает:
- новый поток ввода
- Исключения:
-
IllegalArgumentException- если указана недопустимая комбинация опций -
UnsupportedOperationException- если указана неподдерживаемая опция -
IOException- если произошла ошибка ввода-вывода
newOutputStream
public static OutputStream newOutputStream(Path path, OpenOption... options) throws IOException
Этот метод открывает или создает файл точно так же, как метод newByteChannel за исключением того, что опция READ может отсутствовать в массиве опций. Если опций нет, этот метод работает так, как если бы были указаны опции CREATE, TRUNCATE_EXISTING и WRITE. Другими словами, он открывает файл для записи, создавая файл, если он не существует, или первоначально обрезая существующий regular-file до размера 0, если он существует.
Примеры использования:
Path path = ...
// truncate and overwrite an existing file, or create the file if
// it doesn't initially exist
OutputStream out = Files.newOutputStream(path);
// append to an existing file, fail if the file does not exist
out = Files.newOutputStream(path, APPEND);
// append to an existing file, create file if it doesn't initially exist
out = Files.newOutputStream(path, CREATE, APPEND);
// always create new file, failing if it already exists
out = Files.newOutputStream(path, CREATE_NEW);
- Параметры:
-
path- путь к файлу для открытия или создания -
options- опции, определяющие, как открывается файл - Возвращает:
- новый поток вывода
- Исключения:
-
IllegalArgumentException- еслиoptionsсодержит недопустимую комбинацию опций -
UnsupportedOperationException- если указана неподдерживаемая опция -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указана опцияCREATE_NEW(дополнительное специфическое исключение) -
IOException- если произошла ошибка ввода-вывода
newByteChannel
public static SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
Параметр options определяет, как открывается файл. Опции READ и WRITE определяют, открыт ли файл для чтения и/или записи. Если ни одна из этих опций (или опция APPEND) не присутствует, то файл открывается для чтения. По умолчанию чтение или запись начинаются с начала файла.
В дополнение к READ и WRITE могут присутствовать следующие опции:
| Опция | Описание |
|---|---|
APPEND | Если эта опция присутствует, то файл открывается для записи, и при каждом вызове метода канала write позиция сначала перемещается в конец файла, а затем записываются запрошенные данные. Будут ли перемещение позиции и запись данных выполняться в единой атомарной операции, зависит от системы и не определено. Эта опция не может использоваться совместно с опциями READ или TRUNCATE_EXISTING. |
TRUNCATE_EXISTING | Если эта опция присутствует, то существующий файл усекается до размера 0 байт. Эта опция игнорируется, когда файл открывается только для чтения. |
CREATE_NEW | Если эта опция присутствует, то создается новый файл, который не создается, если файл уже существует или является символической ссылкой. При создании файла проверка существования файла и создание файла, если он не существует, атомарны относительно других операций с файловой системой. Эта опция игнорируется, когда файл открывается только для чтения. |
CREATE | Если эта опция присутствует, то существующий файл открывается, если он существует, в противном случае создается новый файл. Эта опция игнорируется, если опция CREATE_NEW также присутствует или файл открывается только для чтения. |
DELETE_ON_CLOSE | При наличии этой опции реализация делает лучшую попытку удалить файл при закрытии методом close. Если метод close не вызывается, делается лучшая попытка удалить файл при завершении работы виртуальной машины Java. |
SPARSE | При создании нового файла эта опция является подсказкой о том, что новый файл будет разреженным. Эта опция игнорируется, если новый файл не создается. |
SYNC | Требует, чтобы каждое обновление содержимого или метаданных файла синхронно записывалось на базовое хранилище. (см. Интегрированность файлов синхронизированного ввода-вывода). |
DSYNC | Требует, чтобы каждое обновление содержимого файла синхронно записывалось на базовое хранилище. (см. Интегрированность файлов синхронизированного ввода-вывода). |
Параметр attrs является необязательным file-attributes для атомарной установки при создании нового файла.
В случае провайдера по умолчанию возвращаемый байтовый канал поиска — FileChannel.
Примеры использования:
Path path = ...
// open file for reading
ReadableByteChannel rbc = Files.newByteChannel(path, EnumSet.of(READ)));
// open file for writing to the end of an existing file, creating
// the file if it doesn't already exist
WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND));
// create file with initial permissions, opening it for both reading and writing
FileAttribute<Set<PosixFilePermission>> perms = ...
SeekableByteChannel sbc =
Files.newByteChannel(path, EnumSet.of(CREATE_NEW,READ,WRITE), perms);
- Параметры:
-
path- путь к файлу для открытия или создания -
options- опции, определяющие, как открывается файл -
attrs- необязательный список атрибутов файла для атомарной установки при создании файла - Возвращает:
- новый байтовый канал поиска
- Исключения:
-
IllegalArgumentException- если набор содержит недопустимую комбинацию опций -
UnsupportedOperationException- если указана неподдерживаемая опция открытия или массив содержит атрибуты, которые нельзя установить атомарно при создании файла -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указана опцияCREATE_NEWи файл открывается для записи (дополнительное специфическое исключение) -
IOException- если произошла ошибка ввода-вывода - См. также:
newByteChannel
public static SeekableByteChannel newByteChannel(Path path, OpenOption... options) throws IOException
Этот метод открывает или создает файл точно так же, как метод newByteChannel.
- Параметры:
-
path- путь к файлу для открытия или создания -
options- опции, определяющие, как открывается файл - Возвращает:
- новый байтовый канал поиска
- Исключения:
-
IllegalArgumentException- если набор содержит недопустимую комбинацию опций -
UnsupportedOperationException- если указана неподдерживаемая опция открытия -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указана опцияCREATE_NEWи файл открывается для записи (дополнительное специфическое исключение) -
IOException- если произошла ошибка ввода-вывода - См. также:
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
DirectoryStream для итерирования по всем записям в директории. Элементы, возвращаемые методом iterator потока директории, имеют тип
Path, каждый из которых представляет запись в директории. Объекты Path получаются так, как если бы имя записи в директории было резольвлено с помощью 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 может включать следующие значения:
| Опция | Описание |
|---|---|
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 может включать следующие опции:
| Опция | Описание |
|---|---|
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.
- Он является рефлексивным: для
Pathf,isSameFile(f,f)должен возвращатьtrue. - Он является симметричным: для двух
Pathsfиg,isSameFile(f,g)будет равноisSameFile(g,f). - Он является транзитивным: для трёх
Pathsf,gиh, еслиisSameFile(f,g)возвращаетtrueиisSameFile(g,h)возвращаетtrue, тоisSameFile(f,h)вернётtrue.
- Параметры:
-
path- один путь к файлу -
path2- другой путь - Возвращает:
-
true, если и только если оба пути указывают на один и тот же файл - Исключения:
-
IOException- если произошла ошибка ввода-вывода - См. также:
mismatch
public static long mismatch(Path path, Path path2) throws IOException
-1L, если несовпадения нет. Позиция будет в диапазоне от 0L до размера (в байтах) меньшего файла.
Два файла считаются совпадающими, если они удовлетворяют одному из следующих условий:
- Два пути указывают на один и тот же файл, даже если два равных пути указывают на файл, который не существует;
- Два файла имеют одинаковый размер, и каждый байт в первом файле идентичен соответствующему байту во втором файле.
В противном случае между двумя файлами есть несоответствие, и возвращаемое значение этого метода равно:
- Позиция первого несовпадающего байта;
- Размер меньшего файла (в байтах), когда файлы имеют разные размеры, и каждый байт меньшего файла идентичен соответствующему байту большего файла.
Этот метод может быть не атомарным по отношению к другим операциям файловой системы. Этот метод всегда рефлексивен (для Path f, mismatch(f,f) возвращает -1L). Если файловая система и файлы остаются статичными, то этот метод является симметричным (для двух Paths f и g, mismatch(f,g) вернёт то же значение, что и mismatch(g,f)).
Если оба Path объекта равны, то этот метод возвращает true без проверки существования файла.
- 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
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);
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
Параметр 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
Параметр 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- если произошла ошибка ввода-вывода - См. также:
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- если произошла ошибка ввода-вывода - См. также:
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- если произошла ошибка ввода-вывода - См. также:
size
public static long size(Path path) throws IOException
regular файлами, зависит от реализации и поэтому не определен.- Parameters:
-
path- путь к файлу - Returns:
- размер файла в байтах
- Throws:
-
IOException- если произошла ошибка ввода-вывода - См. также:
exists
public static boolean exists(Path path, LinkOption... options)
Параметр options может быть использован для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки отслеживаются. Если опция NOFOLLOW_LINKS присутствует, то символические ссылки не отслеживаются.
Обратите внимание, что результат этого метода немедленно устаревает. Если этот метод указывает, что файл существует, нет гарантии, что последующий доступ будет успешным. При использовании этого метода в приложениях, чувствительных к безопасности, следует соблюдать осторожность.
- Parameters:
-
path- путь к файлу для проверки -
options- опции, указывающие, как обрабатывать символические ссылки - Returns:
-
true, если файл существует;false, если файл не существует или его существование нельзя определить. - См. также:
неСуществует
public static boolean notExists(Path path, LinkOption... options)
Параметр options может быть использован для указания того, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки следуют. Если опция NOFOLLOW_LINKS присутствует, то символические ссылки не следуют.
Обратите внимание, что этот метод не является дополнением к методу exists. В тех случаях, когда невозможно определить, существует файл или нет, оба метода возвращают false. Как и в методе exists, результат этого метода немедленно устаревает. Если этот метод указывает, что файл существует, нет гарантии, что последующая попытка создания файла будет успешной. При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.
- Параметры:
-
path- путь к файлу для проверки -
options- опции, указывающие, как обрабатывать символические ссылки - Возвращает:
-
true, если файла не существует;false, если файл существует или его существование нельзя определить
читаемый
public static boolean isReadable(Path path)
Обратите внимание, что результат этого метода немедленно устаревает, нет гарантии, что последующая попытка открыть файл для чтения будет успешной (или даже что он будет обращаться к тому же файлу). При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
-
true, если файл существует и доступен для чтения;false, если файл не существует, доступ для чтения был бы запрещен из-за недостаточных привилегий виртуальной машины Java или доступ не может быть определен
записываемый
public static boolean isWritable(Path path)
Обратите внимание, что результат этого метода немедленно устаревает, нет гарантии, что последующая попытка открыть файл для записи будет успешной (или даже что он будет обращаться к тому же файлу). При использовании этого метода в приложениях, чувствительных к безопасности, следует проявлять осторожность.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
-
true, если файл существует и доступен для записи;false, если файл не существует, доступ для записи был бы запрещен из-за недостаточных привилегий виртуальной машины Java или доступ не может быть определен
исполняемый
public static boolean isExecutable(Path path)
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:
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:
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- если при чтении из файла произошла ошибка ввода-вывода или прочитанная последовательность байтов имеет неправильный формат или не может быть преобразована - См. также:
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
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
Все символы записываются как есть, включая разделители строк в последовательности символов. Дополнительные символы не добавляются.
Параметр 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
- См. также:
Проход
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:
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:
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:
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