当我想更新我的(比如说 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这将有助于找到保留句柄的进程。
关于java - 如何在Java中删除重命名文件后的图像并删除原始文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324824/