当我想更新我的(让我说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
并重新运行-有可能您仍然无法删除该文件。
因此,您必须找到谁忙着处理。基本上有两种可能性:
它在代码中的其他地方
它是某种外部过程(防病毒,用于渲染图像的另一个应用程序等)。您可以使用Process Explorer来帮助查找保留该句柄的进程。