Files.copy()
Копирует файл. По умолчанию не перезаписывает существующий файл.
Доступно с: Java 7
Синтаксис
public static Path copy(Path source, Path target, CopyOption... options)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| source | Path | Что копировать. |
| target | Path | Путь к копии, включая имя файла. |
| options | CopyOption... | Необязательно: REPLACE_EXISTING, COPY_ATTRIBUTES. |
Возвращаемое значение
PathПуть к копии.
Примеры
Резервная копия файла; исходный файл остаётся на месте:
void main() throws IOException {
Path dir = Files.createTempDirectory("demo");
Path source = Files.writeString(dir.resolve("notes.txt"), "Buy milk");
Path copy = Files.copy(source, dir.resolve("notes-backup.txt"));
IO.println(Files.readString(copy));
IO.println(Files.exists(source));
}Результат:
Buy milk
trueПерезапись существующего файла требует REPLACE_EXISTING:
void main() throws IOException {
Path dir = Files.createTempDirectory("demo");
Path a = Files.writeString(dir.resolve("a.txt"), "new");
Path b = Files.writeString(dir.resolve("b.txt"), "old");
Files.copy(a, b, StandardCopyOption.REPLACE_EXISTING);
IO.println(Files.readString(b));
}Результат:
newПримечания
Без REPLACE_EXISTING копирование поверх существующего файла бросает FileAlreadyExistsException. Папка копируется без содержимого — для копирования дерева обойдите его через Files.walk(). Есть перегрузки для потоков: Files.copy(inputStream, path) сохраняет данные в файл, Files.copy(path, outputStream) отправляет файл в поток.
См. также
- Files.move() — Перемещает или переименовывает файл или папку.
- Files.delete() — Удаляет файл или пустую папку. Вариант deleteIfExists() не бросает исключение, если файла нет.
- Files.exists() — Проверяет, существует ли файл или папка. Рядом — isDirectory(), isRegularFile(), size().
- Path.of() — Создаёт объект Path — путь к файлу или папке.
В учебнике
- Файлы и пути — Работа с файловой системой в Java — Path, Files.exists, создание папок и файлов, размер, копирование, перемещение, удаление и список файлов.