Как удалить изображение в Java после переименования файла и удалить исходный файл? - PullRequest
0 голосов
/ 20 апреля 2020

У меня проблема, когда я хочу обновить свой (скажем, orderNumber), и я пытаюсь переименовать файл изображения. скажем, исходный файл ini MainImage15, который я хочу переименовать в MainImage16 с помощью Files.Copy или Files.Move, и после этого я пытаюсь удалить после успешного копирования. и я получил ошибку, как это

java.nio.file.FileSystemException: C:\Users\User\apache\webapps\Promotion\030000\MainImage15.jpg: The process cannot access the file because it is being used by another process.
public void renameFileToFileSystem(final String fileName, final String oldFileLocation, final String newFileLocation) {
    Path source = Paths.get(oldFileLocation);
    Path destination = Paths.get(newFileLocation);
    try {
        Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
        Files.delete(source);
    } catch (final IOException ioException) {
        throw new ContentManagementException(fileName, ioException.getMessage());
    }
}

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

1 Ответ

1 голос
/ 20 апреля 2020

Я не думаю, что Files.copy держит дескриптор файла открытым.

Чтобы убедиться в его истинности - удалите строку Files.copy и запустите снова - есть вероятность, что вы все равно не сможете удалить файл.

Таким образом, вы должны найти, кто хранит ручка занята. В основном есть две возможности:

  1. Это где-то еще в вашем коде
  2. Это какой-то внешний процесс (антивирус, другое приложение, которое вы использовали для визуализации изображения и т. Д. ). Вы можете использовать Process Explorer , который поможет найти процесс, который держит дескриптор.
...