我正在进行一个java.nio.file.Files.move(path, path.resolveSibling("newfilename"))
操作,用于在Windows 7上重命名一个目录。
但是我遇到了以下异常:
java.nio.file.AccessDeniedException: oldfilename -> newfilename
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
at java.nio.file.Files.move(Files.java:1345)
这是什么原因?我正在使用Java 7。
在调用
Files.move()
之前,目标路径不存在。
更新
从javadoc中得知:When moving a directory requires that its entries be moved then this method fails
(by throwing an IOException).
我的目录非空,并且包含常规文件,所以也许这就是它不能在这里使用的原因?我不太理解“需要移动其条目”的措辞。什么情况下会出现这种情况?