在我的代码中有一个循环,可以用另一个文件替换一个文件。
这是通过以下方式完成的:
java.nio.file.Files.move(Path source, Path target, CopyOption... options) throws IOException引发以下异常:
Exception in thread "main" java.nio.file.FileAlreadyExistsException: C:\BRUTE-FORCE\Test-Loads-2-forces-only.dat.temp -> C:\BRUTE-FORCE\Test-Loads-2-forces-only.dat
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.move(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.move(Unknown Source)
at java.nio.file.Files.move(Unknown Source)
(*) at bruteforce.Main.changeValue(Main.java:260)
at bruteforce.Main.main(Main.java:71)抛出异常的行:
(*) at bruteforce.Main.changeValue(Main.java:260):
Files.move(path, path.resolveSibling("DESTINY_FILE"), REPLACE_EXISTING);Javadoc定义了异常:
...
FileAlreadyExistsException - if the target file exists but cannot be replaced because the REPLACE_EXISTING option is not specified (optional specific exception)
...代码清楚地指定了REPLACE_EXISTING。
此外,该选项是在文件开头导入的:
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;有什么暗示吗?
这可能是由于电脑(或HDD)超高速或类似的原因?我已经设置了挽歌选项,而不是暂停使用电网。
提前感谢
发布于 2018-10-19 11:41:36
Files.move不是原子操作(当然,除非指定了ATOMIC_MOVE ),所以我假设发生的是其他IO锁定了这个文件。
请确保:
close()方法或使用“尝试资源”。如果经常访问文件,则可以尝试创建检查Files.isWritable()的循环。
https://stackoverflow.com/questions/36712992
复制相似问题