java - 如何在Java中删除重命名文件后的图像并删除原始文件?

标签 java spring image java-8

当我想更新我的(比如说 orderNumber)并且我尝试重命名图像文件时遇到问题。假设原始文件 ini MainImage15 我想使用 Files.Copy 或 Files.Move 重命名为 MainImage16,之后我尝试在成功复制后删除。我收到这样的错误

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());
    }
}

我不知道该怎么办。我应该使用缓冲区关闭吗?但我只是重命名该文件。谢谢。

最佳答案

我认为 Files.copy 不会使文件句柄保持打开状态。

要确保其真实性 - 删除 Files.copy 行并重新运行 - 您可能仍然无法删除该文件。

所以你必须找出是谁让句柄忙碌。基本上有两种可能性:

  1. 它在代码的其他地方
  2. 它是某种外部进程(防病毒软件、您用来渲染图像的另一个应用程序等)。您可以使用Process Explorer这将有助于找到保留句柄的进程。

关于java - 如何在Java中删除重命名文件后的图像并删除原始文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324824/

相关文章:

java - OkHttp 客户端不尊重 Accept header

Java 枚举、静态类变量——为什么我不能这样做?

java - Spring模型属性/jsp不可见

java - 使用 @InjectMocks 注入(inject) String 属性

java - Spring MVC;避免 url 中的文件扩展名?

java - Hibernate-无法从输入流解析映射文档

c# - 如何识别一张图像中的物体或图案?

image - 在 Highcharts 中的 xAxis 上显示图像

css - SVG 图像模式如何在保持纵横比的情况下工作?

java - 我可以用 Cordova 编写我的 Android 应用程序,然后用 Java 向它添加更多功能吗?