Задачу я решил. Но почему нельзя без resolve? Почему без resolve при запуске бросает ошибку FileAlreadyExistsException ? Что значит файл Exists? Т. е. когда файл успел появиться в целевой директории?
Виктор Вик
33 уровень
Почему нельзя без resolve?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим Глотов
11 августа 2021, 05:59решение
По ошибке: FileAlreadyExistsException кидается, если при копировании/перемещении файла уже существует файл с точно таким же именем в целевой директории.
метод Files.move - принимает в качестве параметров имя исходного файла, и имя целевого файла. ФАЙЛА - а не директории!
Вы же - указываете директорию, в которую хотите переместить файл. А поскольку директория уже существует - выбрасывается FileAlreadyExistsException. Т.е. вы пытаетесь из файла сделать директорию, но она уже существует.
В правильном варианте вы как раз передаете соединение имени файла и директории - получается полное имя файла, код работает.
+4
Виктор Вик
11 августа 2021, 12:49
О! Немного разъяснилось. Но почему тогда нельзя в качестве целевого файла сделать так?
0
Максим Глотов
11 августа 2021, 13:54решение
да потому что вам нужно к целевой директории добавить имя перемещаемого файла - а сделать это можно методом resolve, который "складывает" два пути и получает абсолютный путь из двух неполных путей - из директории и имени файла.
ваш вот этот второй вариант - это копирование файла в его же имя, причем не ясен полный путь файла. ошибка будет.
+5
Виктор Вик
11 августа 2021, 16:47
Пасиба) Не учёл, что getFileName возвращает не полный путь файла с именем, а только имя.
+1