Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как скопировать или переместить файл

Короткий ответ

Пусть есть файл photo.jpg. Files.copy() копирует его, Files.move() — перемещает или переименовывает:

void main() throws IOException {
    Files.copy(Path.of("photo.jpg"), Path.of("photo-backup.jpg"));
    Files.move(Path.of("photo.jpg"), Path.of("holiday.jpg"));
 
    IO.println(Files.exists(Path.of("photo.jpg")));
    IO.println(Files.exists(Path.of("photo-backup.jpg")));
    IO.println(Files.exists(Path.of("holiday.jpg")));
}

Результат:

false
true
true

Перезаписать существующий

По умолчанию копирование в существующий файл выбрасывает исключение. Опция REPLACE_EXISTING разрешает перезапись:

void main() throws IOException {
    Files.writeString(Path.of("backup.jpg"), "old");
    Files.copy(Path.of("photo.jpg"), Path.of("backup.jpg"), StandardCopyOption.REPLACE_EXISTING);
 
    IO.print(Files.readString(Path.of("backup.jpg")));
}

Результат:

image data

В другую папку

resolve() добавляет имя файла к пути папки:

void main() throws IOException {
    Path source = Path.of("photo.jpg");
    Path archive = Files.createDirectories(Path.of("archive"));
 
    Path target = Files.move(source, archive.resolve(source.getFileName()));
    IO.println(target.toString().replace('\\', '/'));
}

Результат:

archive/photo.jpg

Частая ошибка

Копировать без опции, когда файл назначения уже есть:

void main() throws IOException {
    Files.writeString(Path.of("backup.jpg"), "old");
    Files.copy(Path.of("photo.jpg"), Path.of("backup.jpg"));
}

Результат:

Exception in thread "main" java.nio.file.FileAlreadyExistsException: backup.jpg

Функции из этого ответа

  • Path.of() — Создаёт объект Path — путь к файлу или папке.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.