Класс Files
- java.lang.Object
-
- java.nio.file.Files
public final class Files extends Object
Этот класс состоит исключительно из статических методов, которые работают с файлами, каталогами или другими типами файлов.
В большинстве случаев методы, определенные здесь, будут делегировать выполнение операций с файлами соответствующему поставщику файловой системы.
- С:
- 1.7
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static long | copy(InputStream in,
Path target,
CopyOption... options) | Копирует все байты из входного потока в файл. |
static long | copy(Path source,
OutputStream out) | Копирует все байты из файла в выходной поток. |
static Path | copy(Path source,
Path target,
CopyOption... options) | Копирует файл в целевой файл. |
static Path | createDirectories(Path dir,
FileAttribute<?>... attrs) | Создает директорию, создавая сначала все несуществующие родительские директории. |
static Path | createDirectory(Path dir,
FileAttribute<?>... attrs) | Создает новую директорию. |
static Path | createFile(Path path,
FileAttribute<?>... attrs) | Создает новый и пустой файл, завершаясь ошибкой, если файл уже существует. |
static Path | createLink(Path link,
Path existing) | Создает новую ссылку (запись каталога) для существующего файла (необязательная операция). |
static Path | createSymbolicLink(Path link,
Path target,
FileAttribute<?>... attrs) | Создает символическую ссылку на цель (необязательная операция). |
static Path | createTempDirectory(String prefix,
FileAttribute<?>... attrs) | Создаёт новую директорию в стандартном каталоге временных файлов, используя заданный префикс для генерации имени. |
static Path | createTempDirectory(Path dir,
String prefix,
FileAttribute<?>... attrs) | Создаёт новую директорию в указанном каталоге, используя заданный префикс для генерации имени. |
static Path | createTempFile(String prefix,
String suffix,
FileAttribute<?>... attrs) | Создаёт пустой файл в стандартном каталоге временных файлов, используя заданный префикс и суффикс для генерации имени. |
static Path | createTempFile(Path dir,
String prefix,
String suffix,
FileAttribute<?>... attrs) | Создаёт новый пустой файл в указанном каталоге, используя заданные префикс и суффикс для генерации имени. |
static void | delete(Path path) | Удаляет файл. |
static boolean | deleteIfExists(Path path) | Удаляет файл, если он существует. |
static boolean | exists(Path path,
LinkOption... options) | Проверяет существование файла. |
static Stream<Path> | find(Path start,
int maxDepth,
BiPredicate<Path,BasicFileAttributes> matcher,
FileVisitOption... options) | Возвращает |
static Object | getAttribute(Path path,
String attribute,
LinkOption... options) | Читает значение атрибута файла. |
static <V extends FileAttributeView> | getFileAttributeView(Path path,
Class<V> type,
LinkOption... options) | Возвращает представление атрибутов файла заданного типа. |
static FileStore | getFileStore(Path path) | Возвращает |
static FileTime | getLastModifiedTime(Path path,
LinkOption... options) | Возвращает время последнего изменения файла. |
static UserPrincipal | getOwner(Path path,
LinkOption... options) | Возвращает владельца файла. |
static Set<PosixFilePermission> | getPosixFilePermissions(Path path,
LinkOption... options) | Возвращает права доступа POSIX файла. |
static boolean | isDirectory(Path path,
LinkOption... options) | Проверяет, является ли файл директорией. |
static boolean | isExecutable(Path path) | Проверяет, является ли файл исполняемым. |
static boolean | isHidden(Path path) | Определяет, считается ли файл скрытым. |
static boolean | isReadable(Path path) | Проверяет, можно ли читать файл. |
static boolean | isRegularFile(Path path,
LinkOption... options) | Проверяет, является ли файл обычным файлом с непрозрачным содержимым. |
static boolean | isSameFile(Path path,
Path path2) | Проверяет, указывают ли два пути на один и тот же файл. |
static boolean | isSymbolicLink(Path path) | Проверяет, является ли файл символической ссылкой. |
static boolean | isWritable(Path path) | Проверяет, можно ли записывать в файл. |
static Stream<String> | lines(Path path) | Считывает все строки из файла как |
static Stream<String> | lines(Path path,
Charset cs) | Считывает все строки из файла как |
static Stream<Path> | list(Path dir) | Возвращает лениво заполняемый |
static Path | move(Path source,
Path target,
CopyOption... options) | Перемещает или переименовывает файл в целевой файл. |
static BufferedReader | newBufferedReader(Path path) | Открывает файл для чтения, возвращая |
static BufferedReader | newBufferedReader(Path path,
Charset cs) | Открывает файл для чтения, возвращая |
static BufferedWriter | newBufferedWriter(Path path,
Charset cs,
OpenOption... options) | Открывает или создаёт файл для записи, возвращая |
static BufferedWriter | newBufferedWriter(Path path,
OpenOption... options) | Открывает или создаёт файл для записи, возвращая |
static SeekableByteChannel | newByteChannel(Path path,
OpenOption... options) | Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу. |
static SeekableByteChannel | newByteChannel(Path path,
Set<? extends OpenOption> options,
FileAttribute<?>... attrs) | Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу. |
static DirectoryStream<Path> | newDirectoryStream(Path dir) | Открывает директорию, возвращая |
static DirectoryStream<Path> | newDirectoryStream(Path dir,
String glob) | Открывает директорию, возвращая |
static DirectoryStream<Path> | newDirectoryStream(Path dir,
DirectoryStream.Filter<? super Path> filter) | Открывает директорию, возвращая |
static InputStream | newInputStream(Path path,
OpenOption... options) | Открывает файл, возвращая входной поток для чтения из файла. |
static OutputStream | newOutputStream(Path path,
OpenOption... options) | Открывает или создаёт файл, возвращая выходной поток, который может быть использован для записи байтов в файл. |
static boolean | notExists(Path path,
LinkOption... options) | Проверяет, не существует ли файл по этому пути. |
static String | probeContentType(Path path) | Определяет тип содержимого файла. |
static byte[] | readAllBytes(Path path) | Считывает все байты из файла. |
static List<String> | readAllLines(Path path) | Считывает все строки из файла. |
static List<String> | readAllLines(Path path,
Charset cs) | Считывает все строки из файла. |
static <A extends BasicFileAttributes> | readAttributes(Path path,
Class<A> type,
LinkOption... options) | Считывает атрибуты файла как операцию с блоком данных. |
static Map<String,Object> | readAttributes(Path path,
String attributes,
LinkOption... options) | Считывает набор атрибутов файла как операцию с блоком данных. |
static String | readString(Path path) | Считывает всё содержимое файла в строку, декодируя байты в символы с помощью |
static String | readString(Path path,
Charset cs) | Считывает все символы из файла в строку, декодируя байты в символы с помощью указанного кодирования. |
static Path | readSymbolicLink(Path link) | Считывает цель символической ссылки (необязательная операция). |
static Path | setAttribute(Path path,
String attribute,
Object value,
LinkOption... options) | Устанавливает значение атрибута файла. |
static Path | setLastModifiedTime(Path path,
FileTime time) | Обновляет атрибут времени последнего изменения файла. |
static Path | setOwner(Path path,
UserPrincipal owner) | Обновляет владельца файла. |
static Path | setPosixFilePermissions(Path path,
Set<PosixFilePermission> perms) | Устанавливает права доступа POSIX файла. |
static long | size(Path path) | Возвращает размер файла (в байтах). |
static Stream<Path> | walk(Path start,
int maxDepth,
FileVisitOption... options) | Возвращает |
static Stream<Path> | walk(Path start,
FileVisitOption... options) | Возвращает |
|---|---|---|
static Path | walkFileTree(Path start,
FileVisitor<? super Path> visitor) | Обходит дерево файлов. |
static Path | walkFileTree(Path start,
Set<FileVisitOption> options,
int maxDepth,
FileVisitor<? super Path> visitor) | Обходит дерево файлов. |
static Path | write(Path path,
byte[] bytes,
OpenOption... options) | Записывает байты в файл. |
static Path | write(Path path,
Iterable<? extends CharSequence> lines,
Charset cs,
OpenOption... options) | Записывает строки текста в файл. |
static Path | write(Path path,
Iterable<? extends CharSequence> lines,
OpenOption... options) | Записывает строки текста в файл. |
static Path | writeString(Path path,
CharSequence csq,
Charset cs,
OpenOption... options) | Записывает CharSequence в файл. |
static Path | writeString(Path path,
CharSequence csq,
OpenOption... options) | Записывает CharSequence в файл. |
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Методы
newInputStream
public static InputStream newInputStream(Path path,
OpenOption... options)
throws IOException Открывает файл, возвращая поток ввода для чтения из файла. Поток не буферизован и не обязан поддерживать методы mark и reset. Поток безопасен для доступа из нескольких потоков одновременно. Чтение начинается с начала файла. Будет ли возвращаемый поток асинхронно закрываемым и/или прерывимым, зависит от конкретной реализации файловой системы и поэтому не определено.
Параметр options определяет, как открывается файл. Если опций нет, это эквивалентно открытию файла с опцией READ. Помимо опции
READ, реализация может поддерживать дополнительные опции, специфичные для реализации.
- Параметры:
-
path- путь к открываемому файлу -
options- опции, определяющие, как открывается файл - Возвращает:
- новый поток ввода
- Исключения:
-
IllegalArgumentException- если указана некорректная комбинация опций -
UnsupportedOperationException- если опция не поддерживается -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования стандартной реализации и наличия менеджера безопасности, вызывается методcheckReadдля проверки доступа к чтению файла.
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- если опция не поддерживается -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования стандартной реализации и наличия менеджера безопасности, вызывается методcheckWriteдля проверки доступа к записи файла. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открывается с опциейDELETE_ON_CLOSE.
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- если произошла ошибка ввода-вывода -
SecurityException- В случае использования стандартной реализации и наличия менеджера безопасности, вызывается методcheckReadдля проверки доступа к чтению пути, если файл открывается для чтения. МетодcheckWriteвызывается для проверки доступа к записи пути, если файл открывается для записи. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открывается с опциейDELETE_ON_CLOSE. - См. также:
FileChannel.open(Path,Set,FileAttribute[])
newByteChannel
public static SeekableByteChannel newByteChannel(Path path,
OpenOption... options)
throws IOException Открывает или создаёт файл, возвращая доступный для поиска байтовый канал для доступа к файлу.
Этот метод открывает или создаёт файл точно так же, как метод newByteChannel.
- Параметры:
-
path— путь к файлу для открытия или создания -
options— параметры, определяющие способ открытия файла - Возвращает:
- новый доступный канал байтов
- Выбрасывает:
-
IllegalArgumentException— если набор содержит недопустимую комбинацию параметров -
UnsupportedOperationException— если задан неподдерживаемый параметр открытия -
FileAlreadyExistsException— если файл с таким именем уже существует, и задан параметрCREATE_NEW(необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— в случае использования поставщика по умолчанию и установленного менеджера безопасности, методcheckReadвызывается для проверки доступа на чтение к пути, если файл открывается для чтения. МетодcheckWriteвызывается для проверки доступа на запись к пути, если файл открывается для записи. МетодcheckDeleteвызывается для проверки доступа на удаление, если файл открывается с параметромDELETE_ON_CLOSE. - См. также:
FileChannel.open(Path,OpenOption[])
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir)
throws IOException Открывает каталог, возвращая DirectoryStream для итерации по всем элементам каталога. Элементы, возвращаемые итератором потока каталога iterator, имеют тип
Path, каждый из которых представляет собой элемент каталога. Объекты Path получаются как если бы имя элемента каталога было резольвлено с помощью resolving относительно dir.
При отсутствии конструкции try-with-resources, необходимо вызвать метод close потока каталога после завершения итерации, чтобы освободить ресурсы, удерживаемые для открытого каталога.
Если реализация поддерживает операции над элементами каталога, выполняемые без гонок, то возвращаемый поток каталога является SecureDirectoryStream.
- Параметры:
-
dir— путь к каталогу - Возвращает:
- новый и открытый объект
DirectoryStream - Выбрасывает:
-
NotDirectoryException— если файл нельзя открыть по другим причинам, потому что это не каталог (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— в случае использования поставщика по умолчанию и установленного менеджера безопасности, методcheckReadвызывается для проверки доступа на чтение к каталогу.
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.
- Параметры:
-
dir— путь к каталогу -
glob— шаблон globbing - Возвращает:
- новый и открытый объект
DirectoryStream - Выбрасывает:
-
PatternSyntaxException— если шаблон недопустим -
NotDirectoryException— если файл нельзя открыть по другим причинам, потому что это не каталог (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— в случае использования поставщика по умолчанию и установленного менеджера безопасности, методcheckReadвызывается для проверки доступа на чтение к каталогу.
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)) {
:
}
- Параметры:
-
dir— путь к каталогу -
filter— фильтр потока каталога - Возвращает:
- новый и открытый объект
DirectoryStream - Выбрасывает:
-
NotDirectoryException— если файл нельзя открыть по другим причинам, потому что это не каталог (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— в случае использования поставщика по умолчанию и установленного менеджера безопасности, методcheckReadвызывается для проверки доступа на чтение к каталогу.
createFile
public static Path createFile(Path path,
FileAttribute<?>... attrs)
throws IOException Создает новый и пустой файл, если файл уже существует — операция завершается неудачно. Проверка существования файла и создание нового файла, если он не существует, — это единая операция, атомарная относительно всех других операций с файловой системой, которые могут повлиять на каталог.
Параметр attrs — необязательный file-attributes для атомарного задания при создании файла. Каждый атрибут определяется по своему name. Если в массиве содержится более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются.
- Параметры:
-
path— путь к файлу для создания -
attrs— необязательный список атрибутов файла, которые нужно атомарно задать при создании файла - Возвращает:
- файл
- Выбрасывает:
-
UnsupportedOperationException— если массив содержит атрибут, который не может быть задан атомарно при создании файла -
FileAlreadyExistsException— если файл с таким именем уже существует (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода или родительский каталог не существует -
SecurityException— в случае использования поставщика по умолчанию и установленного менеджера безопасности, методcheckWriteвызывается для проверки доступа на запись к новому файлу.
createDirectory
public static Path createDirectory(Path dir,
FileAttribute<?>... attrs)
throws IOException Создает новый каталог. Проверка существования файла и создание каталога, если он не существует, — это единая операция, атомарная относительно всех других операций с файловой системой, которые могут повлиять на каталог. Метод createDirectories следует использовать, если необходимо предварительно создать все несуществующие родительские каталоги.
Параметр attrs — необязательный file-attributes для атомарного задания при создании каталога. Каждый атрибут определяется по своему name. Если в массиве содержится более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются.
- Параметры:
-
dir- каталог для создания -
attrs- необязательный список атрибутов файла для атомарного задания при создании каталога - Возвращает:
- каталог
- Исключения:
-
UnsupportedOperationException- если массив содержит атрибут, который не может быть атомарно задан при создании каталога -
FileAlreadyExistsException- если каталог не может быть создан по другим причинам, так как файл с таким именем уже существует (необязательное специфическое исключение) -
IOException- если произошла ошибка ввода-вывода или родительский каталог не существует -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteдля проверки доступа на запись в новый каталог.
createDirectories
public static Path createDirectories(Path dir,
FileAttribute<?>... attrs)
throws IOException Создает каталог, предварительно создав все отсутствующие родительские каталоги. В отличие от метода createDirectory, исключение не генерируется, если каталог не может быть создан, потому что он уже существует.
Параметр attrs необязательный file-attributes для атомарного задания при создании отсутствующих каталогов. Каждый атрибут файла определяется по его name. Если в массиве указано более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются.
Если этот метод завершается неудачно, то это может произойти после создания некоторых, но не всех, родительских каталогов.
- Параметры:
-
dir- каталог для создания -
attrs- необязательный список атрибутов файла для атомарного задания при создании каталога - Возвращает:
- каталог
- Исключения:
-
UnsupportedOperationException- если массив содержит атрибут, который не может быть атомарно задан при создании каталога -
FileAlreadyExistsException- еслиdirсуществует, но не является каталогом (необязательное специфическое исключение) -
IOException- если произошла ошибка ввода-вывода -
SecurityException- в случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteперед попыткой создать каталог и егоcheckReadвызывается для каждого родительского каталога, который проверяется. Еслиdirне является абсолютным путем, то может потребоваться вызвать егоtoAbsolutePathдля получения абсолютного пути. Это может вызвать метод менеджера безопасностиcheckPropertyAccessдля проверки доступа к системной переменнойuser.dir
createTempFile
public static Path createTempFile(Path dir,
String prefix,
String suffix,
FileAttribute<?>... attrs)
throws IOException Создает новый пустой файл в указанном каталоге, используя заданные префикс и суффикс для генерации его имени. Результирующий Path ассоциируется с тем же FileSystem, что и заданный каталог.
Детали построения имени файла зависят от реализации и поэтому не определены. По возможности, prefix и suffix используются для построения кандидатов в имена так же, как и в методе File.createTempFile(String,String,File).
Как и методы File.createTempFile, этот метод является лишь частью механизма временных файлов. При использовании в качестве рабочих файлов, результирующий файл может быть открыт с опцией DELETE_ON_CLOSE, чтобы файл удалялся при вызове соответствующего close метода. В качестве альтернативы, можно использовать shutdown-hook или механизм File.deleteOnExit() для автоматического удаления файла.
Параметр attrs необязательный file-attributes для атомарного задания при создании файла. Каждый атрибут определяется по его name. Если в массиве указано более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются. Если атрибуты файла не указаны, результирующий файл может иметь более ограниченные права доступа, чем файлы, созданные методом File.createTempFile(String,String,File).
- Параметры:
-
dir- путь к каталогу для создания файла -
prefix- строка-префикс, используемая для генерации имени файла; может бытьnull -
suffix- строка-суффикс, используемая для генерации имени файла; может бытьnull, в этом случае используется ".tmp" -
attrs- необязательный список атрибутов файла для атомарного задания при создании файла - Возвращает:
- путь к только что созданному файлу, который не существовал до вызова этого метода
- Исключения:
-
IllegalArgumentException- если префикс или суффикс не могут быть использованы для генерации имени файла-кандидата -
UnsupportedOperationException- если массив содержит атрибут, который не может быть атомарно задан при создании каталога -
IOException- если произошла ошибка ввода-вывода илиdirне существует -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteдля проверки доступа на запись к файлу.
createTempFile
public static Path createTempFile(String prefix,
String suffix,
FileAttribute<?>... attrs)
throws IOException Создаёт пустой файл в стандартном временном каталоге, используя заданные префикс и суффикс для генерации его имени. Результирующий
Path ассоциируется со стандартным FileSystem.
Этот метод работает точно так же, как и createTempFile(Path,String,String,FileAttribute[]) метод в случае, когда параметр dir является временным каталогом.
- Параметры:
-
prefix- строка-префикс, используемая для генерации имени файла; может бытьnull -
suffix- строка-суффикс, используемая для генерации имени файла; может бытьnull, в этом случае используется ".tmp" -
attrs- необязательный список атрибутов файла для атомарного задания при создании файла - Возвращает:
- путь к только что созданному файлу, который не существовал до вызова этого метода
- Исключения:
-
IllegalArgumentException- если префикс или суффикс не могут быть использованы для генерации имени файла-кандидата -
UnsupportedOperationException- если массив содержит атрибут, который не может быть атомарно задан при создании каталога -
IOException- если произошла ошибка ввода-вывода или временной каталог не существует -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteдля проверки доступа на запись к файлу.
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. Если в массиве указано более одного атрибута с одинаковым именем, все, кроме последнего, игнорируются.
- Параметры:
-
dir- путь к каталогу для создания каталога -
prefix- строка-префикс, используемая для генерации имени каталога; может бытьnull -
attrs- необязательный список атрибутов файла для атомарного задания при создании каталога - Возвращает:
- путь к только что созданному каталогу, который не существовал до вызова этого метода
- Исключения:
-
IllegalArgumentException- если префикс не может быть использован для генерации имени каталога-кандидата -
UnsupportedOperationException- если массив содержит атрибут, который не может быть атомарно задан при создании каталога -
IOException- если произошла ошибка ввода-вывода илиdirне существует -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteдля проверки доступа на запись при создании каталога.
createTempDirectory
public static Path createTempDirectory(String prefix,
FileAttribute<?>... attrs)
throws IOException Создает новый каталог в стандартном временном каталоге, используя заданный префикс для генерации его имени. Результирующий Path ассоциируется со стандартным FileSystem.
Этот метод работает точно так же, как и createTempDirectory(Path,String,FileAttribute[]) метод в случае, когда параметр dir является временным каталогом.
- Параметры:
-
prefix— префиксная строка, используемая при создании имени каталога; может бытьnull -
attrs— необязательный список атрибутов файла, которые нужно установить атомарно при создании каталога - Возвращает:
- путь к вновь созданному каталогу, которого не существовало до вызова этого метода
- Выбрасывает:
-
IllegalArgumentException— если префикс нельзя использовать для создания имени кандидата каталога -
UnsupportedOperationException— если массив содержит атрибут, который нельзя установить атомарно при создании каталога -
IOException— если произошла ошибка ввода-вывода или временный каталог не существует -
SecurityException— В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteдля проверки доступа на запись при создании каталога.
createSymbolicLink
public static Path createSymbolicLink(Path link,
Path target,
FileAttribute<?>... attrs)
throws IOException Создаёт символическую ссылку на целевой объект (необязательная операция).
Параметр target — целевой объект ссылки. Он может быть абсолютным absolute или относительным путём и может не существовать. Если целевой путь является относительным, то операции файловой системы с созданной ссылкой будут относительными к пути ссылки.
Параметр attrs — необязательные attributes атрибуты, которые нужно установить атомарно при создании ссылки. Каждый атрибут определяется по своему name. Если в массиве указано более одного атрибута с одинаковым именем, то все кроме последнего будут проигнорированы.
Если символические ссылки поддерживаются, но базовый FileStore не поддерживает символические ссылки, то это может завершиться с ошибкой IOException. Кроме того, некоторые операционные системы могут потребовать запуска Java виртуальной машины со специфичными для реализации привилегиями для создания символических ссылок, в этом случае этот метод может выбросить IOException.
- Параметры:
-
link— путь к создаваемой символической ссылке -
target— целевой объект символической ссылки -
attrs— массив атрибутов для установки атомарно при создании символической ссылки - Возвращает:
- путь к символической ссылке
- Выбрасывает:
-
UnsupportedOperationException— если реализация не поддерживает символические ссылки или массив содержит атрибут, который нельзя установить атомарно при создании символической ссылки -
FileAlreadyExistsException— если файл с таким именем уже существует (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию и установленным менеджером безопасности, он отказывается вLinkPermission("symbolic")или его методеcheckWriteотказывается в доступе на запись к пути символической ссылки.
createLink
public static Path createLink(Path link,
Path existing)
throws IOException Создаёт новую ссылку (запись в каталоге) для существующего файла (необязательная операция).
Параметр link указывает место расположения записи в каталоге. Параметр existing — путь к существующему файлу. Этот метод создаёт новую запись в каталоге для файла, чтобы к нему можно было обратиться, используя link в качестве пути. В некоторых файловых системах это известно как создание "жёсткой ссылки". Сохраняются ли атрибуты файла для файла или для каждой записи в каталоге, зависит от файловой системы и поэтому не определено. Обычно файловая система требует, чтобы все ссылки (записи в каталоге) для одного файла находились в одной файловой системе. Кроме того, на некоторых платформах Java виртуальная машина может потребовать запуска со специфичными для реализации привилегиями для создания жёстких ссылок или ссылок на каталоги.
- Параметры:
-
link— создаваемая ссылка (запись в каталоге) -
existing— путь к существующему файлу - Возвращает:
- путь к ссылке (записи в каталоге)
- Выбрасывает:
-
UnsupportedOperationException— если реализация не поддерживает добавление существующего файла в каталог -
FileAlreadyExistsException— если запись не может быть создана, потому что файл с таким именем уже существует (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию и установленным менеджером безопасности, он отказывается вLinkPermission("hard")или его методеcheckWriteотказывается в доступе на запись к ссылке или существующему файлу.
delete
public static void delete(Path path)
throws IOException Удаляет файл.
Реализация может потребовать проверки файла, чтобы определить, является ли он каталогом. Следовательно, этот метод может не быть атомарным по отношению к другим операциям с файловой системой. Если файл является символической ссылкой, то удаляется сама символическая ссылка, а не конечный целевой объект ссылки.
Если файл является каталогом, то каталог должен быть пустым. В некоторых реализациях каталог имеет записи для специальных файлов или ссылок, которые создаются при создании каталога. В таких реализациях каталог считается пустым, когда существуют только специальные записи. Этот метод можно использовать с методом walkFileTree для удаления каталога и всех записей в каталоге или всего дерева файлов, если это необходимо.
На некоторых операционных системах может быть невозможно удалить файл, если он открыт и используется этой Java виртуальной машиной или другими программами.
- Параметры:
-
path— путь к файлу, который нужно удалить - Выбрасывает:
-
NoSuchFileException— если файл не существует (необязательное исключение) -
DirectoryNotEmptyException— если файл является каталогом и не может быть удалён, потому что каталог не пуст (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методSecurityManager.checkDelete(String)для проверки доступа на удаление файла
deleteIfExists
public static boolean deleteIfExists(Path path)
throws IOException Удаляет файл, если он существует.
Как и в методе delete(Path), реализация может потребовать проверки файла, чтобы определить, является ли он каталогом. Следовательно, этот метод может не быть атомарным по отношению к другим операциям с файловой системой. Если файл является символической ссылкой, то удаляется сама символическая ссылка, а не конечный целевой объект ссылки.
Если файл является каталогом, то каталог должен быть пустым. В некоторых реализациях каталог имеет записи для специальных файлов или ссылок, которые создаются при создании каталога. В таких реализациях каталог считается пустым, когда существуют только специальные записи.
На некоторых операционных системах может быть невозможно удалить файл, если он открыт и используется этой Java виртуальной машиной или другими программами.
- Параметры:
-
path— путь к файлу, который нужно удалить - Возвращает:
-
true, если файл был удалён этим методом;false, если файл не может быть удалён, потому что он не существует - Выбрасывает:
-
DirectoryNotEmptyException— если файл является каталогом и не может быть удалён, потому что каталог не пуст (необязательное исключение) -
IOException— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методSecurityManager.checkDelete(String)для проверки доступа на удаление файла.
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- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа к чтению исходного файла, а такжеcheckWriteдля проверки доступа к записи в целевой файл. Если копируется символическая ссылка, менеджер безопасности вызывается для проверкиLinkPermission("symbolic").
move
public static Path move(Path source,
Path target,
CopyOption... options)
throws IOException
Переместить или переименовать файл в целевой файл.
По умолчанию, этот метод пытается переместить файл в целевой файл, терпя неудачу, если целевой файл существует, за исключением случаев, когда исходный и целевой файлы являются same файлом, в этом случае этот метод не имеет эффекта. Если файл является символической ссылкой, то переносится сама символическая ссылка, а не объект, на который она указывает. Этот метод может быть вызван для перемещения пустого каталога. В некоторых реализациях каталог имеет записи для специальных файлов или ссылок, создаваемых при создании каталога. В таких реализациях каталог считается пустым, когда существуют только специальные записи. При вызове для перемещения каталога, который не пуст, каталог перемещается, если это не требует перемещения записей в каталоге. Например, переименование каталога в той же FileStore обычно не требует перемещения записей в каталоге. Если для перемещения каталога требуется перемещение его записей, этот метод терпит неудачу (выбрасывая исключение
IOException). Для перемещения дерева файлов может потребоваться копирование, а не перемещение каталогов, и это можно сделать, используя метод copy в сочетании с утилитарным методом Files.walkFileTree.
Параметр options может включать любое из следующих значений:
| Опция | Описание |
|---|---|
REPLACE_EXISTING
|
Если целевой файл существует, то он заменяется, если это не пустой каталог. Если целевой файл существует и является символической ссылкой, то заменяется сама символическая ссылка, а не объект, на который она указывает. |
ATOMIC_MOVE
|
Перемещение выполняется как атомарная операция файловой системы, и все другие опции игнорируются. Если целевой файл существует, то замена существующего файла зависит от реализации, или метод терпит неудачу, выбрасывая исключение IOException. Если перемещение не может быть выполнено как атомарная операция файловой системы, то выбрасывается AtomicMoveNotSupportedException. Это может произойти, например, когда целевое расположение находится на другой FileStore и потребовалось бы скопировать файл, или целевое расположение связано с другим поставщиком, чем этот объект. |
Реализация данного интерфейса может поддерживать дополнительные опции, специфичные для реализации.
Перемещение файла скопирует 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не указана (возможное специфическое исключение) -
DirectoryNotEmptyException- опцияREPLACE_EXISTINGуказана, но файл не может быть заменён, потому что это непустой каталог, или исходный объект является непустым каталогом, содержащим записи, которые необходимо переместить (возможные специфические исключения) -
AtomicMoveNotSupportedException- если в массиве опций содержится опцияATOMIC_MOVE, но файл не может быть перемещён как атомарная операция файловой системы. -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, вызывается методcheckWriteдля проверки доступа к записи в исходный и целевой файлы.
readSymbolicLink
public static Path readSymbolicLink(Path link)
throws IOException
Считывает объект целевого объекта символической ссылки (необязательная операция).
Если файловая система поддерживает символические ссылки, то этот метод используется для считывания объекта, на который указывает ссылка, терпя неудачу, если файл не является символической ссылкой. Объект, на который указывает ссылка, не обязательно должен существовать. Возвращаемый Path объект будет связан с той же файловой системой, что и link.
- Параметры:
-
link- путь к символической ссылке - Возвращает:
- объект
Path, представляющий целевой объект ссылки - Исключения:
-
UnsupportedOperationException- если реализация не поддерживает символические ссылки -
NotLinkException- если целевой объект не может быть прочитан, потому что файл не является символической ссылкой (возможное специфическое исключение) -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, проверяется, чтоFilePermissionполучил разрешение на действие "readlink" для чтения ссылки.
getFileStore
public static FileStore getFileStore(Path path)
throws IOException
Возвращает FileStore, представляющий хранилище файлов, где расположен файл.
После получения ссылки на FileStore, реализация может определять, зависят ли операции над возвращенным FileStore или объектами FileStoreAttributeView, полученными из него, от существования файла. В частности, поведение не определено в случае удаления или перемещения файла в другое хранилище.
- Параметры:
-
path- путь к файлу - Возвращает:
- хранилище файлов, в котором хранится файл
- Исключения:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа на чтение к файлу, а также проверяетсяRuntimePermission("getFileStoreAttributes")
isSameFile
public static boolean isSameFile(Path path,
Path path2)
throws IOException Проверяет, указывают ли два пути на один и тот же файл.
Если оба объекта Path equal, то этот метод возвращает true без проверки существования файла. Если два объекта Path связаны с разными поставщиками, то этот метод возвращает false. В противном случае этот метод проверяет, указывают ли оба объекта Path на один и тот же файл, и в зависимости от реализации может потребоваться открыть или получить доступ к обоим файлам.
Если файловая система и файлы остаются статичными, то этот метод реализует отношение эквивалентности для ненулевых Paths.
- Он рефлексивен: для
Pathf,isSameFile(f,f)должен вернутьtrue. - Он симметричен: для двух
Pathsfиg,isSameFile(f,g)будет равноisSameFile(g,f). - Он транзитивен: для трех
Pathsf,gиh, еслиisSameFile(f,g)возвращаетtrueиisSameFile(g,h)возвращаетtrue, тоisSameFile(f,h)вернетtrue.
- Параметры:
-
path- один путь к файлу -
path2- другой путь - Возвращает:
-
true, если и только если два пути указывают на один и тот же файл - Исключения:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа на чтение к обоим файлам. - См. также:
BasicFileAttributes.fileKey()
isHidden
public static boolean isHidden(Path path)
throws IOException Указывает, является ли файл скрытым. Точное определение скрытого файла зависит от платформы или поставщика. Например, в UNIX-системах файл считается скрытым, если его имя начинается с точки ('.'). В Windows файл считается скрытым, если это не каталог и атрибут DOS hidden установлен.
В зависимости от реализации этот метод может потребовать доступа к файловой системе для определения, является ли файл скрытым.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
-
true, если файл считается скрытым - Исключения:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа на чтение к файлу.
probeContentType
public static String probeContentType(Path path)
throws IOException Определяет тип содержимого файла.
Этот метод использует установленные реализации FileTypeDetector для проверки заданного файла и определения его типа содержимого. Каждый детектор типов файлов вызывается в свою очередь с методом probeContentType для проверки типа файла. Если тип файла распознан, возвращается тип содержимого. Если тип файла не распознан ни одним из установленных детекторов типов файлов, вызывается системный детектор типов файлов для определения типа содержимого по умолчанию.
Данное обращение виртуальной машины Java сохраняет глобальный список детекторов типов файлов. Установленные детекторы типов файлов загружаются с помощью механизма загрузки поставщиков, определенного классом ServiceLoader. Установленные детекторы типов файлов загружаются с помощью системного загрузчика классов. Если системный загрузчик классов не найден, используется платформенный загрузчик классов. Детекторы типов файлов обычно устанавливаются путем размещения их в JAR-файле в пути к классам приложения. JAR-файл содержит файл конфигурации поставщика, названный java.nio.file.spi.FileTypeDetector, в каталоге ресурсов META-INF/services, и файл перечисляет одно или несколько полных квалифицированных имен конкретных подклассов FileTypeDetector , имеющих конструктор без аргументов. Если процесс поиска или создания экземпляров установленных детекторов типов файлов терпит неудачу, выбрасывается неопределенная ошибка. Порядок расположения установленных поставщиков зависит от реализации.
Значение возвращаемое этим методом — строковое представление значения типа содержимого MIME (Multipurpose Internet Mail Extensions), как определено в RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. Строка гарантированно может быть обработана в соответствии с грамматикой в RFC.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
- Тип содержимого файла или
null, если тип содержимого определить невозможно - Исключения:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- Если установлен менеджер безопасности и он запрещает неопределенные разрешения, необходимые для реализации детектора типов файлов.
getFileAttributeView
public static <V extends FileAttributeView> V getFileAttributeView(Path path,
Class<V> type,
LinkOption... options) Возвращает представление атрибутов файла заданного типа.
Представление атрибутов файла предоставляет доступ для чтения или изменения набора атрибутов файла. Этот метод предназначен для использования в тех случаях, когда представление атрибутов файла определяет методы с типом данных для чтения или изменения атрибутов файла. Параметр type — это тип требуемого представления атрибутов файла, и метод возвращает экземпляр этого типа, если он поддерживается. Тип BasicFileAttributeView поддерживает доступ к базовым атрибутам файла. Вызов этого метода для выбора представления атрибутов файла этого типа всегда вернет экземпляр этого класса.
Массив options может использоваться для указания того, как обрабатывать символьные ссылки для случая, когда файл является символьной ссылкой. По умолчанию символьные ссылки отслеживаются. Если присутствует опция NOFOLLOW_LINKS, символьные ссылки не отслеживаются. Эта опция игнорируется реализациями, которые не поддерживают символьные ссылки.
Пример использования: Предположим, что мы хотим прочитать или установить ACL файла, если это поддерживается:
Path path = ...
AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
if (view != null) {
List<AclEntry> acl = view.getAcl();
:
}
- Параметры типов:
-
V- ТипFileAttributeView - Параметры:
-
path- путь к файлу -
type- объектClass, соответствующий представлению атрибутов файла -
options- параметры, указывающие, как обрабатывать символьные ссылки - Возвращает:
- представление атрибутов файла указанного типа, или
null, если представление атрибутов типа недоступно
readAttributes
public static <A extends BasicFileAttributes> A readAttributes(Path path,
Class<A> type,
LinkOption... options)
throws IOException Считывает атрибуты файла как опцию пакетной обработки.
Параметр type — это тип требуемых атрибутов, и этот метод возвращает экземпляр этого типа, если он поддерживается. Все реализации поддерживают базовый набор атрибутов файла, поэтому вызов этого метода с параметром type типа
BasicFileAttributes.class не выбросит
UnsupportedOperationException.
Массив options может использоваться для указания того, как обрабатывать символьные ссылки в случае, если файл является символьной ссылкой. По умолчанию символьные ссылки отслеживаются, и считываются атрибуты файла конечной цели ссылки. Если опция NOFOLLOW_LINKS присутствует, символьные ссылки не отслеживаются.
В зависимости от реализации, все атрибуты файла могут считываться как атомарная операция по отношению к другим операциям с файловой системой.
Пример использования: Предположим, что мы хотим прочитать атрибуты файла в пакетной обработке:
Path path = ...
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); В противном случае, предположим, что мы хотим прочитать POSIX-атрибуты файла без отслеживания символьных ссылок: PosixFileAttributes attrs =
Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
- Параметры типов:
-
A- ТипBasicFileAttributes - Параметры:
-
path- путь к файлу -
type- классClassтребуемых атрибутов файла -
options- параметры, указывающие, как обрабатывать символьные ссылки - Возвращает:
- атрибуты файла
- Исключения:
-
UnsupportedOperationException- если атрибуты указанного типа не поддерживаются -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае использования поставщика по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа на чтение к файлу. Если этот метод вызывается для считывания атрибутов, чувствительных к безопасности, менеджер безопасности может вызвать дополнительные разрешения.
setAttribute
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— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию, если установлен менеджер безопасности, его методcheckWriteотказывается от записи в файл. Если этот метод используется для установки атрибутов, чувствительных к безопасности, менеджер безопасности может быть вызван для проверки дополнительных разрешений.
getAttribute
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— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию, если установлен менеджер безопасности, его методcheckReadотказывается от чтения файла. Если этот метод используется для чтения атрибутов, чувствительных к безопасности, менеджер безопасности может быть вызван для проверки дополнительных разрешений.
readAttributes
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— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию, если установлен менеджер безопасности, его методcheckReadотказывается от чтения файла. Если этот метод используется для чтения атрибутов, чувствительных к безопасности, менеджер безопасности может быть вызван для проверки дополнительных разрешений.
getPosixFilePermissions
public static Set<PosixFilePermission> getPosixFilePermissions(Path path,
LinkOption... options)
throws IOException Возвращает права POSIX файла.
Параметр path связан с FileSystem, который поддерживает PosixFileAttributeView. Это представление атрибутов предоставляет доступ к атрибутам файлов, обычно связанным с файлами в файловых системах, используемых операционными системами, которые реализуют семейство стандартов Portable Operating System Interface (POSIX).
Массив options может быть использован для указания, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию символические ссылки следуют, и атрибут файла конечной цели ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.
- Параметры:
-
path— путь к файлу -
options— опции, указывающие, как обрабатывать символические ссылки - Возвращает:
- права доступа к файлу
- Выбрасывает:
-
UnsupportedOperationException— если связанная файловая система не поддерживаетPosixFileAttributeView -
IOException— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию, если установлен менеджер безопасности, и он отказывается отRuntimePermission("accessUserInformation")или его методcheckReadотказывается от чтения файла.
setPosixFilePermissions
public static Path setPosixFilePermissions(Path path,
Set<PosixFilePermission> perms)
throws IOException Устанавливает права POSIX файла.
Параметр path связан с FileSystem, который поддерживает PosixFileAttributeView. Это представление атрибутов предоставляет доступ к атрибутам файлов, обычно связанным с файлами в файловых системах, используемых операционными системами, которые реализуют семейство стандартов Portable Operating System Interface (POSIX).
- Параметры:
-
path— Путь к файлу -
perms— Новый набор прав - Возвращает:
- Указанный путь
- Выбрасывает:
-
UnsupportedOperationException— если связанная файловая система не поддерживаетPosixFileAttributeView -
ClassCastException— если набор содержит элементы, не являющиесяPosixFilePermission -
IOException— если произошла ошибка ввода-вывода -
SecurityException— В случае с поставщиком по умолчанию, если установлен менеджер безопасности, он отказывается отRuntimePermission("accessUserInformation")или его методcheckWriteотказывается от записи в файл.
getOwner
public static UserPrincipal getOwner(Path path,
LinkOption... options)
throws IOException Возвращает владельца файла.
Параметр path связан с файловой системой, поддерживающей FileOwnerAttributeView. Эта просмотрщик атрибутов файла предоставляет доступ к атрибуту файла, являющемуся владельцем файла.
- Параметры:
-
path- Путь к файлу -
options- параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- Принципал пользователя, представляющий владельца файла
- Выбрасывает:
-
UnsupportedOperationException- если связанная файловая система не поддерживаетFileOwnerAttributeView -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, он отказывается отRuntimePermission("accessUserInformation")или его методcheckReadотказывается предоставить доступ для чтения к файлу.
setOwner
public static Path setOwner(Path path,
UserPrincipal owner)
throws IOException Обновляет владельца файла.
Параметр path связан с файловой системой, поддерживающей FileOwnerAttributeView. Эта просмотрщик атрибутов файла предоставляет доступ к атрибуту файла, являющемуся владельцем файла.
Пример использования: Предположим, что мы хотим назначить "joe" владельцем файла:
Path path = ...
UserPrincipalLookupService lookupService =
provider(path).getUserPrincipalLookupService();
UserPrincipal joe = lookupService.lookupPrincipalByName("joe");
Files.setOwner(path, joe);
- Параметры:
-
path- Путь к файлу -
owner- Новый владелец файла - Возвращает:
- Указанный путь
- Выбрасывает:
-
UnsupportedOperationException- если связанная файловая система не поддерживаетFileOwnerAttributeView -
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, он отказывается отRuntimePermission("accessUserInformation")или его методcheckWriteотказывается предоставить доступ для записи к файлу. - См. также:
-
FileSystem.getUserPrincipalLookupService(),UserPrincipalLookupService
isSymbolicLink
public static boolean isSymbolicLink(Path path)
Проверяет, является ли файл символической ссылкой.
В случае, если необходимо отличить ошибку ввода-вывода от случая, когда файл не является символической ссылкой, атрибуты файла можно считать с помощью метода readAttributes, а тип файла проверить с помощью метода BasicFileAttributes.isSymbolicLink().
- Параметры:
-
path- Путь к файлу - Возвращает:
-
true, если файл является символической ссылкой;false, если файл не существует, не является символической ссылкой или невозможно определить, является ли файл символической ссылкой. - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, его методcheckReadотказывается предоставить доступ для чтения к файлу.
isDirectory
public static boolean isDirectory(Path path,
LinkOption... options) Проверяет, является ли файл каталогом.
Массив options может быть использован для указания того, как обрабатываются символические ссылки в случае, если файл является символической ссылкой. По умолчанию, символические ссылки следуют, и атрибут файла конечного объекта ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.
В случае, если необходимо отличить ошибку ввода-вывода от случая, когда файл не является каталогом, атрибуты файла можно считать с помощью метода readAttributes, а тип файла проверить с помощью метода BasicFileAttributes.isDirectory().
- Параметры:
-
path- путь к файлу для проверки -
options- параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
-
true, если файл является каталогом;false, если файл не существует, не является каталогом или невозможно определить, является ли файл каталогом. - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, его методcheckReadотказывается предоставить доступ для чтения к файлу.
isRegularFile
public static boolean isRegularFile(Path path,
LinkOption... options) Проверяет, является ли файл обычным файлом с непрозрачным содержимым.
Массив options может быть использован для указания того, как обрабатываются символические ссылки в случае, если файл является символической ссылкой. По умолчанию, символические ссылки следуют, и атрибут файла конечного объекта ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.
В случае, если необходимо отличить ошибку ввода-вывода от случая, когда файл не является обычным файлом, атрибуты файла можно считать с помощью метода readAttributes, а тип файла проверить с помощью метода BasicFileAttributes.isRegularFile().
- Параметры:
-
path- путь к файлу -
options- параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
-
true, если файл является обычным файлом;false, если файл не существует, не является обычным файлом или невозможно определить, является ли файл обычным файлом. - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, его методcheckReadотказывается предоставить доступ для чтения к файлу.
getLastModifiedTime
public static FileTime getLastModifiedTime(Path path,
LinkOption... options)
throws IOException Возвращает время последнего изменения файла.
Массив options может быть использован для указания того, как обрабатываются символические ссылки в случае, если файл является символической ссылкой. По умолчанию, символические ссылки следуют, и атрибут файла конечного объекта ссылки считывается. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.
- Параметры:
-
path- путь к файлу -
options- параметры, указывающие, как обрабатываются символические ссылки - Возвращает:
- объект
FileTime, представляющий время последнего изменения файла, или специальное значение по умолчанию, если файловая система не поддерживает время последнего изменения - Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, его методcheckReadотказывается предоставить доступ для чтения к файлу. - См. также:
BasicFileAttributes.lastModifiedTime()
setLastModifiedTime
public static Path setLastModifiedTime(Path path,
FileTime time)
throws IOException Обновляет атрибут времени последнего изменения файла. Время файла преобразуется в эпоху и точность, поддерживаемую файловой системой. Преобразование с большей к меньшей точности приводит к потере точности. Поведение этого метода при попытке установить время последнего изменения, если оно не поддерживается файловой системой или находится за пределами диапазона, поддерживаемого подлежащим хранилищем файлов, не определено. Возможно, он завершится неудачей, бросив исключение IOException.
Пример использования: Предположим, что мы хотим установить время последнего изменения на текущее время:
Path path = ...
FileTime now = FileTime.fromMillis(System.currentTimeMillis());
Files.setLastModifiedTime(path, now);
- Параметры:
-
path- путь к файлу -
time- новое время последнего изменения - Возвращает:
- Указанный путь
- Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, его методcheckWriteотказывается предоставить доступ для записи к файлу. - См. также:
BasicFileAttributeView.setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime)
size
public static long size(Path path)
throws IOException Возвращает размер файла (в байтах). Размер может отличаться от фактического размера на файловой системе из-за сжатия, поддержки разреженных файлов или других причин. Размер файлов, которые не являются regular файлами, зависит от реализации и поэтому не определен.
- Параметры:
-
path- путь к файлу - Возвращает:
- размер файла в байтах
- Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, его методcheckReadотказывается предоставить доступ для чтения к файлу. - См. также:
BasicFileAttributes.size()
exists
public static boolean exists(Path path,
LinkOption... options) Проверяет, существует ли файл.
Параметр options может быть использован для указания того, как обрабатываются символические ссылки в случае, если файл является символической ссылкой. По умолчанию, символические ссылки отслеживаются. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не отслеживаются.
Обратите внимание, что результат этого метода быстро устаревает. Если этот метод указывает, что файл существует, нет гарантии, что последующий доступ будет успешным. Следует проявлять осторожность при использовании этого метода в приложениях, чувствительных к безопасности.
- Параметры:
-
path- путь к файлу для проверки -
options- параметры, определяющие, как обрабатывать символические ссылки. - Возвращает:
-
true, если файл существует;false, если файл не существует или его существование не может быть определено. - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию вызываетсяSecurityManager.checkRead(String)для проверки доступа для чтения к файлу. - См. также:
notExists(java.nio.file.Path, java.nio.file.LinkOption...)
notExists
public static boolean notExists(Path path,
LinkOption... options) Проверяет, не существует ли файл по указанному пути. Этот метод предназначен для случаев, когда необходимо предпринять действие, когда подтверждено, что файл не существует.
Параметр options может быть использован для указания, как обрабатывать символические ссылки в случае, если файл является символической ссылкой. По умолчанию, символические ссылки следуют. Если присутствует опция NOFOLLOW_LINKS, то символические ссылки не следуют.
Обратите внимание, что этот метод не является дополнением к методу exists. В случаях, когда невозможно определить, существует ли файл или нет, оба метода возвращают false. Как и в методе exists, результат этого метода сразу устаревает. Если этот метод указывает, что файл существует, нет гарантии, что последующая попытка создать файл будет успешной. Следует проявлять осторожность при использовании этого метода в приложениях, чувствительных к безопасности.
- Параметры:
-
path- путь к файлу для проверки -
options- параметры, определяющие, как обрабатывать символические ссылки - Возвращает:
-
true, если файл не существует;false, если файл существует или его существование не может быть определено - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию вызываетсяSecurityManager.checkRead(String)для проверки доступа для чтения к файлу.
isReadable
public static boolean isReadable(Path path)
Проверяет, доступен ли файл для чтения. Этот метод проверяет, что файл существует и что у этой виртуальной машины Java есть соответствующие привилегии для открытия файла на чтение. В зависимости от реализации, этот метод может потребовать чтения разрешений на чтение файла, списков управления доступом или других атрибутов файла для проверки эффективного доступа к файлу. Следовательно, этот метод может не быть атомарным относительно других операций с файловой системой.
Обратите внимание, что результат этого метода сразу устаревает, нет гарантии, что последующая попытка открыть файл для чтения будет успешной (или даже что она будет обращаться к тому же файлу). Следует проявлять осторожность при использовании этого метода в приложениях, чувствительных к безопасности.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
-
true, если файл существует и доступен для чтения;false, если файл не существует, доступ для чтения будет запрещен из-за недостаточных привилегий у виртуальной машины Java или доступ не может быть определен. - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности вызываетсяcheckReadдля проверки доступа для чтения к файлу.
isWritable
public static boolean isWritable(Path path)
Проверяет, доступен ли файл для записи. Этот метод проверяет, что файл существует и что у этой виртуальной машины Java есть соответствующие привилегии для открытия файла на запись. В зависимости от реализации, этот метод может потребовать чтения разрешений на запись файла, списков управления доступом или других атрибутов файла для проверки эффективного доступа к файлу. Следовательно, этот метод может не быть атомарным относительно других операций с файловой системой.
Обратите внимание, что результат этого метода сразу устаревает, нет гарантии, что последующая попытка открыть файл для записи будет успешной (или даже что она будет обращаться к тому же файлу). Следует проявлять осторожность при использовании этого метода в приложениях, чувствительных к безопасности.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
-
true, если файл существует и доступен для записи;false, если файл не существует, доступ для записи будет запрещен из-за недостаточных привилегий у виртуальной машины Java или доступ не может быть определен - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности вызываетсяcheckWriteдля проверки доступа для записи к файлу.
isExecutable
public static boolean isExecutable(Path path)
Проверяет, доступен ли файл для выполнения. Этот метод проверяет, что файл существует и что у этой виртуальной машины Java есть соответствующие привилегии для execute файла. Семантика может отличаться при проверке доступа к каталогу. Например, в системах UNIX проверка доступа на выполнение проверяет, имеет ли виртуальная машина Java разрешение на поиск каталога для доступа к файлам или подкаталогам.
В зависимости от реализации, этот метод может потребовать чтения разрешений на чтение файла, списков управления доступом или других атрибутов файла для проверки эффективного доступа к файлу. Следовательно, этот метод может не быть атомарным относительно других операций с файловой системой.
Обратите внимание, что результат этого метода сразу устаревает, нет гарантии, что последующая попытка выполнить файл будет успешной (или даже что она будет обращаться к тому же файлу). Следует проявлять осторожность при использовании этого метода в приложениях, чувствительных к безопасности.
- Параметры:
-
path- путь к файлу для проверки - Возвращает:
-
true, если файл существует и доступен для выполнения;false, если файл не существует, доступ для выполнения будет запрещен из-за недостаточных привилегий у виртуальной машины Java или доступ не может быть определен - Выбрасывает:
-
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности вызываетсяcheckExecдля проверки доступа для выполнения к файлу.
walkFileTree
public static Path walkFileTree(Path start,
Set<FileVisitOption> options,
int maxDepth,
FileVisitor<? super Path> visitor)
throws IOException Проход по дереву файлов.
Этот метод проходит по дереву файлов, укоренённому в заданном начальном файле. Обход дерева файлов осуществляется в глубину, и заданный FileVisitor вызывается для каждого встреченного файла. Проход по дереву файлов завершается, когда все доступные файлы в дереве посещены или метод посещения возвращает результат TERMINATE. Если метод посещения завершается из-за IOException, непредвиденной ошибки или исключения во время выполнения, то обход завершается, и ошибка или исключение передаются вызывающему методу.
Для каждого встреченного файла этот метод пытается прочитать его BasicFileAttributes. Если файл не является каталогом, то вызывается метод visitFile с атрибутами файла. Если атрибуты файла не могут быть прочитаны из-за исключения ввода-вывода, то вызывается метод visitFileFailed с исключением ввода-вывода.
Если файл является каталогом и каталог не может быть открыт, то метод visitFileFailed вызывается с исключением ввода-вывода, после чего обход дерева файлов продолжается по умолчанию в следующем брате каталога.
Если каталог успешно открыт, то элементы каталога и их потомки посещаются. Когда все элементы посещены или во время итерации по каталогу возникает ошибка ввода-вывода, каталог закрывается, и вызывается метод посетителя postVisitDirectory. Обход дерева файлов продолжается по умолчанию в следующем брате каталога.
По умолчанию, символические ссылки не отслеживаются автоматически этим методом. Если параметр options содержит опцию FOLLOW_LINKS, то символические ссылки отслеживаются. При отслеживании ссылок и атрибуты целевого объекта не могут быть прочитаны, этот метод пытается получить BasicFileAttributes ссылки. Если они могут быть прочитаны, то вызывается метод visitFile с атрибутами ссылки (в противном случае вызывается метод visitFileFailed, как указано выше).
Если параметр options содержит опцию FOLLOW_LINKS, то этот метод отслеживает посещенные каталоги для обнаружения циклов. Цикл возникает, когда в каталоге есть запись, которая является предком каталога. Обнаружение циклов выполняется путем записи file-key каталогов, или, если ключи файлов недоступны, вызовом метода isSameFile для проверки, является ли каталог тем же файлом, что и предок. При обнаружении цикла он обрабатывается как ошибка ввода-вывода, и вызывается метод visitFileFailed с экземпляром FileSystemLoopException.
Параметр maxDepth — это максимальное количество уровней каталогов для посещения. Значение 0 означает, что посещается только начальный файл, если это не запрещено менеджером безопасности. Значение MAX_VALUE может быть использовано для указания необходимости посещения всех уровней. Метод visitFile вызывается для всех файлов, включая каталоги, встреченные на уровне maxDepth, если только атрибуты базового файла не могут быть прочитаны, в этом случае вызывается метод
visitFileFailed.
Если посетитель возвращает результат null, то
NullPointerException выбрасывается.
Когда установлен менеджер безопасности и он запрещает доступ к файлу (или каталогу), то он игнорируется, и посетитель не вызывается для этого файла (или каталога).
- Параметры:
-
start- начальный файл -
options- параметры для настройки обхода -
maxDepth- максимальное количество уровней каталогов для посещения -
visitor- обработчик файлов для вызова для каждого файла - Возвращает:
- начальный файл
- Выбрасывает:
-
IllegalArgumentException- если параметрmaxDepthотрицателен -
SecurityException- если менеджер безопасности запрещает доступ к начальному файлу. В случае с поставщиком по умолчанию, вызывается методcheckReadдля проверки доступа для чтения к каталогу. -
IOException- если метод обработчика файла вызывает ошибку ввода-вывода
walkFileTree
public static Path walkFileTree(Path start,
FileVisitor<? super Path> visitor)
throws IOException Обходит файловую структуру.
Этот метод работает так, как будто его вызов эквивалентен вычислению выражения:
walkFileTree(start, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor)В других словах, он не следует символическим ссылкам и посещает все уровни файловой структуры.
- Параметры:
-
start- начальный файл -
visitor- обработчик файлов для вызова для каждого файла - Возвращает:
- начальный файл
- Выбрасывает:
-
SecurityException- Если менеджер безопасности запрещает доступ к начальному файлу. В случае с поставщиком по умолчанию, вызывается методcheckReadдля проверки доступа для чтения к каталогу. -
IOException- если метод обработчика файла вызывает ошибку ввода-вывода
newBufferedReader
public static BufferedReader newBufferedReader(Path path,
Charset cs)
throws IOException Открывает файл для чтения, возвращая BufferedReader, который может быть использован для эффективного чтения текста из файла. Байты из файла декодируются в символы с использованием указанной кодировки. Чтение начинается с начала файла.
Методы Reader, которые читают из файла, выбрасывают
IOException, если считан неверный или недопустимый байтовый порядок.
- Параметры:
-
path- путь к файлу -
cs- кодировка для декодирования - Возвращает:
- новый буферизированный читатель с по умолчанию размером буфера для чтения текста из файла
- Выбрасывает:
-
IOException- если возникает ошибка ввода-вывода при открытии файла -
SecurityException- В случае с поставщиком по умолчанию, и если установлен менеджер безопасности, вызывается методcheckReadдля проверки доступа для чтения к файлу. - См. также:
readAllLines(java.nio.file.Path, java.nio.charset.Charset)
newBufferedReader
public static BufferedReader newBufferedReader(Path path)
throws IOException Открывает файл для чтения, возвращая BufferedReader для эффективного чтения текста из файла. Байты из файла декодируются в символы с использованием UTF-8 charset.
Этот метод работает так, как будто его вызов эквивалентен вычислению выражения:
Files.newBufferedReader(path, StandardCharsets.UTF_8)
- Параметры:
-
path- путь к файлу - Возвращает:
- новый буферизированный читатель с по умолчанию размером буфера для чтения текста из файла
- Выбрасывает:
-
IOException- если возникает ошибка ввода-вывода при открытии файла -
SecurityException- В случае с поставщиком по умолчанию, и если установлен менеджер безопасности, вызывается методcheckReadдля проверки доступа для чтения к файлу. - С:
- 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, если текст не может быть закодирован с использованием указанной кодировки.
- Параметры:
-
path- путь к файлу -
cs- кодировка для кодирования -
options- опции, определяющие, как открывается файл - Возвращает:
- новый буферизированный писатель с размером буфера по умолчанию для записи текста в файл
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит неверную комбинацию опций -
IOException- если возникает ошибка ввода-вывода при открытии или создании файла -
UnsupportedOperationException- если указана неподдерживаемая опция -
SecurityException- В случае с поставщиком по умолчанию, и если установлен менеджер безопасности, вызывается методcheckWriteдля проверки доступа для записи к файлу. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с опциейDELETE_ON_CLOSE. - См. также:
write(Path,Iterable,Charset,OpenOption[])
newBufferedWriter
public static BufferedWriter newBufferedWriter(Path path,
OpenOption... options)
throws IOException Открывает или создаёт файл для записи, возвращая BufferedWriter для эффективной записи текста в файл. Текст кодируется в байты для записи с использованием UTF-8 charset.
Этот метод работает так, как будто его вызов эквивалентен вычислению выражения:
Files.newBufferedWriter(path, StandardCharsets.UTF_8, options)
- Параметры:
-
path- путь к файлу -
options- опции, определяющие, как открывается файл - Возвращает:
- новый буферизированный писатель с размером буфера по умолчанию для записи текста в файл
- Выбрасывает:
-
IllegalArgumentException- еслиoptionsсодержит неверную комбинацию опций -
IOException- если возникает ошибка ввода-вывода при открытии или создании файла -
UnsupportedOperationException- если указана неподдерживаемая опция -
SecurityException- В случае с поставщиком по умолчанию, и если установлен менеджер безопасности, вызывается методcheckWriteдля проверки доступа для записи к файлу. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с опциейDELETE_ON_CLOSE. - С:
- 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://java.sun.com/");
try (InputStream in = u.toURL().openStream()) {
Files.copy(in, path);
}
- Параметры:
-
in- поток ввода для чтения -
target- путь к файлу -
options- опции, определяющие, как должна быть выполнена копия - Возвращает:
- количество прочитанных или записанных байтов
- Выбрасывает:
-
IOException- если возникает ошибка ввода-вывода при чтении или записи -
FileAlreadyExistsException- если целевой файл существует, но не может быть заменён, потому что опцияREPLACE_EXISTINGне указана (опциональная специфическая ошибка) -
DirectoryNotEmptyException- опцияREPLACE_EXISTINGуказана, но файл не может быть заменён, потому что это непустой каталог (опциональная специфическая ошибка) * -
UnsupportedOperationException- еслиoptionsсодержит опцию копирования, которая не поддерживается -
SecurityException- В случае с поставщиком по умолчанию, и если установлен менеджер безопасности, вызывается методcheckWriteдля проверки доступа для записи к файлу. Где указана опцияREPLACE_EXISTING, вызывается метод менеджера безопасностиcheckDeleteдля проверки возможности удаления существующего файла.
copy
public static long copy(Path source,
OutputStream out)
throws IOException Копирует все байты из файла в поток вывода.
Если при чтении из файла или записи в поток вывода произойдёт ошибка ввода-вывода, она может произойти после того, как некоторые байты были прочитаны или записаны. Вследствие этого, поток вывода может оказаться в несогласованном состоянии. Сильно рекомендуется незамедлительно закрыть поток вывода, если произошла ошибка ввода-вывода.
Этот метод может блокироваться неопределённое время, ожидая записи в поток вывода (или чтения из файла). Поведение в случае, когда поток вывода асинхронно закрывается или поток прерывается во время копирования, сильно зависит от конкретной реализации потока вывода и файловой системы, и поэтому не определено.
Обратите внимание, что если заданный поток вывода является Flushable, то его метод flush может потребоваться вызвать после завершения этого метода для сброса буферизованного вывода.
- Параметры:
-
source- путь к файлу -
out- поток вывода для записи - Возвращает:
- количество прочитанных или записанных байтов
- Исключения:
-
IOException- если произошла ошибка ввода-вывода при чтении или записи -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckReadдля проверки доступа к чтению файла.
readAllBytes
public static byte[] readAllBytes(Path path)
throws IOException Считывает все байты из файла. Метод гарантирует, что файл будет закрыт, когда все байты будут прочитаны или произойдёт ошибка ввода-вывода или другое исключение во время выполнения.
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно прочитать все байты в массив байтов. Он не предназначен для чтения больших файлов.
- Параметры:
-
path- путь к файлу - Возвращает:
- массив байтов, содержащий прочитанные из файла байты
- Исключения:
-
IOException- если произошла ошибка ввода-вывода при чтении из потока -
OutOfMemoryError- если массив необходимого размера не может быть выделен, например, файл больше, чем2GB -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckReadдля проверки доступа к чтению файла.
readString
public static String readString(Path path)
throws IOException Читает всё содержимое файла в строку, декодируя байты в символы с использованием UTF-8 charset. Метод гарантирует, что файл закрыт, когда всё содержимое прочитано или произошла ошибка ввода-вывода или другое исключение во время выполнения.
Этот метод эквивалентен: readString(path, StandardCharsets.UTF_8)
- Параметры:
-
path- путь к файлу - Возвращает:
- строка, содержащая содержимое, прочитанное из файла
- Исключения:
-
IOException- если при чтении из файла произошла ошибка ввода-вывода или прочитана некорректная или недопустимая последовательность байтов -
OutOfMemoryError- если файл чрезвычайно большой, например, больше, чем2GB -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckReadдля проверки доступа к чтению файла. - С тех пор:
- 11
readString
public static String readString(Path path,
Charset cs)
throws IOException Читает все символы из файла в строку, декодируя байты в символы, используя указанный кодировку. Метод гарантирует, что файл закрыт, когда всё содержимое прочитано, или произошла ошибка ввода-вывода, или другое исключение во время выполнения.
Этот метод читает всё содержимое, включая разделители строк посередине и/или в конце. Результирующая строка будет содержать разделители строк, как они появляются в файле.
- Примечание API:
- Этот метод предназначен для простых случаев, когда уместно и удобно считать содержимое файла в строку. Он не предназначен для чтения очень больших файлов.
- Параметры:
-
path- путь к файлу -
cs- кодировка, используемая для декодирования - Возвращает:
- строка, содержащая содержимое, прочитанное из файла
- Исключения:
-
IOException- если при чтении из файла произошла ошибка ввода-вывода или прочитана некорректная или недопустимая последовательность байтов -
OutOfMemoryError- если файл чрезвычайно большой, например, больше, чем2GB -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckReadдля проверки доступа к чтению файла. - С тех пор:
- 11
readAllLines
public static List<String> readAllLines(Path path,
Charset cs)
throws IOException Читает все строки из файла. Этот метод гарантирует, что файл закрывается, когда все байты прочитаны или произошла ошибка ввода-вывода или другое исключение во время выполнения. Байты из файла декодируются в символы, используя указанную кодировку.
Этот метод распознаёт следующие как разделители строк:
-
\u000D, за которым следует\u000A, КОД ВОЗВРАТА КАРЕТКИ, за которым следует ПЕРЕВОД СТРОКИ -
\u000A, ПЕРЕВОД СТРОКИ -
\u000D, КОД ВОЗВРАТА КАРЕТКИ
Дополнительные разделители строк Юникода могут быть распознаны в будущих версиях.
Обратите внимание, что этот метод предназначен для простых случаев, когда удобно прочитать все строки в одной операции. Он не предназначен для чтения больших файлов.
- Параметры:
-
path- путь к файлу -
cs- кодировка, используемая для декодирования - Возвращает:
- строки из файла в виде
List; вопрос о том, является лиListизменяемым или нет, зависит от реализации и поэтому не определён - Исключения:
-
IOException- если при чтении из файла произошла ошибка ввода-вывода или прочитана некорректная или недопустимая последовательность байтов -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckReadдля проверки доступа к чтению файла. - См. также:
newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
readAllLines
public static List<String> readAllLines(Path path)
throws IOException Читает все строки из файла. Байты из файла декодируются в символы, используя UTF-8 charset.
Этот метод работает так, как если бы вызов был эквивалентен вычислению выражения:
Files.readAllLines(path, StandardCharsets.UTF_8)
- Параметры:
-
path- путь к файлу - Возвращает:
- строки из файла в виде
List; вопрос о том, является лиListизменяемым или нет, зависит от реализации и поэтому не определён - Исключения:
-
IOException- если при чтении из файла произошла ошибка ввода-вывода или прочитана некорректная или недопустимая последовательность байтов -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckReadдля проверки доступа к чтению файла. - С тех пор:
- 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- если указан неподдерживаемый параметр -
SecurityException- В случае с поставщиком по умолчанию и установленным менеджером безопасности, вызывается методcheckWriteдля проверки доступа к записи в файл. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с параметромDELETE_ON_CLOSE.
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- если задан неподдерживаемый параметр -
SecurityException- В случае использования стандартного поставщика и установки менеджера безопасности, вызывается методcheckWriteдля проверки доступа к записи в файл. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с параметромDELETE_ON_CLOSE.
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- если задан неподдерживаемый параметр -
SecurityException- В случае использования стандартного поставщика и установки менеджера безопасности, вызывается методcheckWriteдля проверки доступа к записи в файл. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с параметромDELETE_ON_CLOSE. - С:
- 1.8
writeString
public static Path writeString(Path path,
CharSequence csq,
OpenOption... options)
throws IOException Записывает CharSequence в файл. Символы кодируются в байты с использованием набора символов UTF-8 charset.
Этот метод эквивалентен: writeString(path, test, StandardCharsets.UTF_8, options)
- Параметры:
-
path- путь к файлу -
csq- CharSequence для записи -
options- параметры, определяющие, как открывается файл - Возвращает:
- путь
- Исключения:
-
IllegalArgumentException- еслиoptionsсодержит недопустимую комбинацию параметров -
IOException- если при записи в файл или его создании произошла ошибка ввода-вывода или текст не может быть закодирован с использованием указанного набора символов -
UnsupportedOperationException- если задан неподдерживаемый параметр -
SecurityException- В случае использования стандартного поставщика и установки менеджера безопасности, вызывается методcheckWriteдля проверки доступа к записи в файл. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с параметромDELETE_ON_CLOSE. - С:
- 11
writeString
public static Path writeString(Path path,
CharSequence csq,
Charset cs,
OpenOption... options)
throws IOException Записывает CharSequence в файл. Символы кодируются в байты с использованием указанного набора символов.
Все символы записываются как есть, включая разделители строк в последовательности символов. Дополнительные символы не добавляются.
Параметр options определяет, как создаётся или открывается файл. Если параметры отсутствуют, то этот метод работает так, как если бы параметры CREATE, TRUNCATE_EXISTING и WRITE были заданы. Другими словами, он открывает файл для записи, создавая его, если он не существует, или изначально обнуляя существующий regular-file до размера 0.
- Параметры:
-
path- путь к файлу -
csq- CharSequence для записи -
cs- набор символов для кодирования -
options- параметры, определяющие, как открывается файл - Возвращает:
- путь
- Исключения:
-
IllegalArgumentException- еслиoptionsсодержит недопустимую комбинацию параметров -
IOException- если при записи в файл или его создании произошла ошибка ввода-вывода или текст не может быть закодирован с использованием указанного набора символов -
UnsupportedOperationException- если задан неподдерживаемый параметр -
SecurityException- В случае использования стандартного поставщика и установки менеджера безопасности, вызывается методcheckWriteдля проверки доступа к записи в файл. МетодcheckDeleteвызывается для проверки доступа к удалению, если файл открыт с параметромDELETE_ON_CLOSE. - С:
- 11
list
public static Stream<Path> list(Path dir)
throws IOException Возвращает лениво заполняемую Stream, элементы которой — это записи в каталоге. Перечисление не рекурсивное.
Элементы потока — это объекты Path, которые получаются так, как если бы вы выполняли resolving имя записи каталога относительно dir. Некоторые файловые системы поддерживают специальные ссылки на сам каталог и родительский каталог. Записи, представляющие эти ссылки, не включаются.
Поток слабо согласован. Он потокобезопасен, но не замораживает каталог во время итерации, поэтому он может (или не может) отражать обновления каталога, произошедшие после возвращения из этого метода.
Возвращаемый поток содержит ссылку на открытый каталог. Каталог закрывается при закрытии потока.
Обработка закрытого потока ведёт себя так, как если бы был достигнут конец потока. Из-за предварительной загрузки один или несколько элементов могут быть возвращены после закрытия потока.
Если при обращении к каталогу после возвращения из этого метода выбрасывается IOException, он оборачивается в UncheckedIOException, который будет сгенерирован методом, вызвавшим обращение.
- Примечание API:
- Этот метод необходимо использовать в блоке try-with-resources или аналогичной управляющей структуре, чтобы гарантировать, что открытый каталог потока закрывается немедленно после завершения операций потока.
- Параметры:
-
dir- Путь к каталогу - Возвращает:
- Поток
Stream, описывающий содержимое каталога - Исключения:
-
NotDirectoryException- если файл не может быть открыт по другим причинам, потому что он не является каталогом (необязательное конкретное исключение) -
IOException- если при открытии каталога произошла ошибка ввода-вывода -
SecurityException- В случае использования стандартного поставщика и установки менеджера безопасности, вызывается методcheckReadдля проверки доступа к чтению в каталоге. - С:
- 1.8
- См. также:
newDirectoryStream(Path)
walk
public static Stream<Path> walk(Path start,
int maxDepth,
FileVisitOption... options)
throws IOException Возвращает Stream, который заполняется лениво
Path, проходя по дереву файлов, укоренённому в заданном файле. Дерево файлов обходится в глубину, элементы в потоке — объекты Path, полученные как если бы с помощью resolving относительный путь относительно start.
stream обходит дерево файлов по мере потребления элементов. Возвращаемый Stream гарантированно содержит по меньшей мере один элемент — сам начальный файл. Для каждого посещённого файла поток пытается прочитать его BasicFileAttributes. Если файл является каталогом и его удаётся успешно открыть, записи в каталоге и их потомки будут следовать за каталогом в потоке по мере их обнаружения. После того как все записи будут посещены, каталог закрывается. Обход дерева файлов продолжается для следующего побратима каталога.
Поток является слабо согласованным. Он не замораживает дерево файлов во время итерации, поэтому он может (или не может) отражать обновления дерева файлов, произошедшие после возвращения из этого метода.
По умолчанию символические ссылки не следуют автоматически. Если параметр options содержит опцию FOLLOW_LINKS, то символические ссылки следуют. При следовании ссылкам, если атрибуты целевого файла не могут быть прочитаны, этот метод пытается получить BasicFileAttributes ссылки.
Если параметр options содержит опцию FOLLOW_LINKS, то поток отслеживает посещённые каталоги, чтобы обнаруживать циклы. Цикл возникает, когда запись в каталоге является предком этого каталога. Обнаружение циклов осуществляется путём записи file-key каталогов; если ключи файлов недоступны, вызывается метод isSameFile для проверки, является ли каталог тем же файлом, что и предок. При обнаружении цикла он обрабатывается как ошибка ввода-вывода с экземпляром FileSystemLoopException.
Параметр maxDepth — максимальное количество уровней каталогов для посещения. Значение 0 означает, что посещается только начальный файл, если это не запрещено менеджером безопасности. Значение MAX_VALUE можно использовать для указания, что должны быть посещены все уровни.
Если установлен менеджер безопасности и он запрещает доступ к файлу (или каталогу), то он игнорируется и не включается в поток.
Возвращаемый поток содержит ссылки на один или несколько открытых каталогов. Каталоги закрываются при закрытии потока.
Если при доступе к каталогу после возвращения из этого метода возникает исключение IOException, оно обертывается в UncheckedIOException, которое будет выброшено из метода, вызвавшего доступ.
- API Note:
- Этот метод должен использоваться в блоке try-with-resources или подобной управляющей структуре, чтобы гарантировать, что открытые каталоги потока будут закрыты немедленно после завершения операций потока.
- Parameters:
-
start- начальный файл -
maxDepth- максимальное количество уровней каталогов для посещения -
options- опции для настройки обхода - Returns:
Streamпотока объектовPath- Throws:
-
IllegalArgumentException- если параметрmaxDepthотрицателен -
SecurityException- Если менеджер безопасности запрещает доступ к начальному файлу. В случае с поставщиком по умолчанию вызывается методcheckReadдля проверки доступа к чтению к каталогу. -
IOException- если при доступе к начальному файлу возникает ошибка ввода-вывода. - Since:
- 1.8
walk
public static Stream<Path> walk(Path start,
FileVisitOption... options)
throws IOException Возвращает Stream, который заполняется лениво
Path, проходя по дереву файлов, укоренённому в заданном файле. Дерево файлов обходится в глубину, элементы в потоке — объекты Path, полученные как если бы с помощью resolving относительный путь относительно start.
Этот метод работает так, как будто его вызов эквивалентен вычислению выражения:
walk(start, Integer.MAX_VALUE, options)Другими словами, он посещает все уровни дерева файлов.
Возвращаемый поток содержит ссылки на один или несколько открытых каталогов. Каталоги закрываются при закрытии потока.
- API Note:
- Этот метод должен использоваться в блоке try-with-resources или подобной управляющей структуре, чтобы гарантировать, что открытые каталоги потока будут закрыты немедленно после завершения операций потока.
- Parameters:
-
start- начальный файл -
options- опции для настройки обхода - Returns:
Streamпотока объектовPath- Throws:
-
SecurityException- Если менеджер безопасности запрещает доступ к начальному файлу. В случае с поставщиком по умолчанию вызывается методcheckReadдля проверки доступа к чтению к каталогу. -
IOException- если при доступе к начальному файлу возникает ошибка ввода-вывода. - Since:
- 1.8
- See Also:
walk(Path, int, FileVisitOption...)
find
public static Stream<Path> find(Path start,
int maxDepth,
BiPredicate<Path,BasicFileAttributes> matcher,
FileVisitOption... options)
throws IOException Возвращает Stream, который заполняется лениво
Path, выполняя поиск файлов в дереве файлов, укоренённом в заданном начальном файле.
Этот метод обходит дерево файлов точно так же, как указано в методе walk. Для каждого встреченного файла вызывается заданный BiPredicate с его Path и BasicFileAttributes. Объект Path получается как если бы с помощью resolving относительный путь относительно
start и включается в возвращаемый Stream только если BiPredicate возвращает true. В сравнении с вызовом filter на Stream, возвращённом методом walk, этот метод может быть более эффективным, избегая излишнего получения BasicFileAttributes.
Возвращаемый поток содержит ссылки на один или несколько открытых каталогов. Каталоги закрываются при закрытии потока.
Если при доступе к каталогу после возвращения из этого метода возникает исключение IOException, оно обертывается в UncheckedIOException, которое будет выброшено из метода, вызвавшего доступ.
- API Note:
- Этот метод должен использоваться в блоке try-with-resources или подобной управляющей структуре, чтобы гарантировать, что открытые каталоги потока будут закрыты немедленно после завершения операций потока.
- Parameters:
-
start- начальный файл -
maxDepth- максимальное количество уровней каталогов для поиска -
matcher- функция, используемая для принятия решения о том, должен ли файл включаться в возвращаемый поток -
options- опции для настройки обхода - Returns:
Streamпотока объектовPath- Throws:
-
IllegalArgumentException- если параметрmaxDepthотрицателен -
SecurityException- Если менеджер безопасности запрещает доступ к начальному файлу. В случае с поставщиком по умолчанию вызывается методcheckReadдля проверки доступа к чтению к каталогу. -
IOException- если при доступе к начальному файлу возникает ошибка ввода-вывода. - Since:
- 1.8
- See Also:
walk(Path, int, FileVisitOption...)
lines
public static Stream<String> lines(Path path,
Charset cs)
throws IOException Считывает все строки из файла как Stream. В отличие от readAllLines, этот метод не считывает все строки в List, а вместо этого заполняет их лениво по мере потребления потока.
Байты из файла декодируются в символы с использованием указанного набора символов, и поддерживаются те же разделители строк, что и в
readAllLines.
Возвращаемый поток содержит ссылку на открытый файл. Файл закрывается при закрытии потока.
Содержимое файла не должно изменяться во время выполнения терминальной операции потока. В противном случае результат терминальной операции потока не определён.
После возвращения из этого метода любое последующее исключение ввода-вывода, возникающее при чтении из файла или при чтении некорректной или недопустимой последовательности байтов, обертывается в UncheckedIOException, который будет выброшен из метода Stream потока, вызвавшего чтение. В случае, если при закрытии файла возникает исключение IOException, оно также обертывается как UncheckedIOException.
- Примечание API:
- Этот метод должен использоваться в операторе try-with-resources или подобной управляющей структуре, чтобы гарантировать, что открытый файл потока закрывается немедленно после завершения операций потока.
- Примечание реализации:
- Эта реализация поддерживает хорошую производительность параллельных потоков для стандартных кодировок символов
UTF-8,US-ASCIIиISO-8859-1. Такие линейно-оптимальные кодировки символов обладают свойством, что закодированные байты символа новой строки ('\n') или возврата каретки ('\r') эффективно идентифицируются среди других закодированных символов при случайном доступе к байтам файла.Для нелинейно-оптимальных кодировок символов разделитель потока данных имеет плохие свойства разбиения, аналогично разделителю, связанному с итератором или связанному с потоком, возвращенным из
BufferedReader.lines(). Плохие свойства разбиения могут привести к плохой производительности параллельных потоков.Для линейно-оптимальных кодировок символов разделитель потока данных имеет хорошие свойства разбиения, предполагая, что файл содержит регулярную последовательность строк. Хорошие свойства разбиения могут привести к хорошей производительности параллельных потоков. Разделитель для линейно-оптимальной кодировки символов использует преимущества свойств кодировки (символ новой строки или возврат каретки, которые легко идентифицируются), так что при разбиении он приблизительно делит количество строк пополам.
- Параметры:
-
path- путь к файлу -
cs- кодировка символов для декодирования - Возвращает:
- строки из файла в качестве
Stream - Исключения:
-
IOException- если при открытии файла произошла ошибка ввода-вывода -
SecurityException- В случае использования провайдера по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа к чтению файла. - С тех пор:
- 1.8
- См. также:
-
readAllLines(Path, Charset),newBufferedReader(Path, Charset),BufferedReader.lines()
lines
public static Stream<String> lines(Path path)
throws IOException Чтение всех строк из файла в качестве Stream. Байты из файла декодируются в символы с использованием UTF-8 charset.
Возвращаемый поток содержит ссылку на открытый файл. Файл закрывается при закрытии потока.
Содержимое файла не должно изменяться во время выполнения операции терминального потока. В противном случае результат операции терминального потока является неопределённым.
Этот метод работает так, как если бы его вызов был эквивалентен оценке выражения:
Files.lines(path, StandardCharsets.UTF_8)
- Примечание API:
- Этот метод должен использоваться в операторе try-with-resources или подобной управляющей структуре, чтобы гарантировать, что открытый файл потока закрывается немедленно после завершения операций потока.
- Параметры:
-
path- путь к файлу - Возвращает:
- строки из файла в качестве
Stream - Исключения:
-
IOException- если при открытии файла произошла ошибка ввода-вывода -
SecurityException- В случае использования провайдера по умолчанию и установленного менеджера безопасности, вызывается методcheckReadдля проверки доступа к чтению файла. - С тех пор:
- 1.8
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html