java.nio.file. Операция перемещения файлов - PullRequest
0 голосов
/ 24 января 2019

Я использовал метод Files.move в своей программе, как указано ниже.

 public boolean moveAndRenameFile(String targetPath, String newName)
  {
    boolean fileMoved = true;
    try
    {
      Path pathToFile = FileSystems.getDefault().getPath(targetPath);
      Files.move(Paths.get(path), pathToFile.resolve(newName), StandardCopyOption.REPLACE_EXISTING);
    }
    catch (InvalidPathException | IOException e)
    {
      LOGGER.error("File couldn't be moved from {} to target location {}", path, targetPath);
      LOGGER.error(e.getMessage(), e);
      fileMoved = false;
    }
    return fileMoved;
  }

Возможно ли, что файл был удален из исходного местоположения, но не перемещен в целевое местоположение, если какое-либо исключение / ошибка произошла в середине?

Я перешел по следующей ссылке, но не смог найти ответ на этот вопрос. https://docs.oracle.com/javase/tutorial/essential/io/move.html

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Для того же провайдера хранения он использует собственный ход.

В противном случае он делает

copyToForeignTarget(...);
Files.delete(source);

Так что проблем не будет.

0 голосов
/ 24 января 2019

Исходный (исходный) файл не будет удален, пока процесс не будет завершен. Но неполный / поврежденный файл будет сохранен в месте назначения.


Вы можете подтвердить это, выполнив небольшой тест самостоятельно. Переместите файл на съемный диск и отключите съемное устройство до завершения процесса.

...