我正在执行
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()
之前目标路径不存在。
更新
When moving a directory requires that its entries be moved then this method fails
(by throwing an IOException).
我的目录非空并且包含常规文件,所以也许这就是它不能在这里使用的原因?我无法理解“要求移动其条目”的措辞。什么时候有这样的情况?
当目标目录在 Windows 资源管理器中打开时,我遇到了这个问题。关闭 Windows 资源管理器即可正常工作。
由于是Windows,可能目标路径存在并且正在被另一个进程使用..
好吧,所以我自己一直在尝试修复相同的异常,即使这个问题已经有 2 年了,我会将其发布给其他人,可能会发现它有用。
我发现我的文件被标记为“只读”,取消选中后一切正常。
我的目录非空并且包含常规文件,所以也许是这样 它不能在这里使用的原因是什么?我遇到问题了 理解“要求移动其条目”的措辞。什么时候 是这样吗?
当目录移动到同一硬盘驱动器(和同一分区)的其他位置时,不必移动文件。
Files.move()
方法的作用基本上是重命名目录并保持文件不变。
顺便说一句,您可能会遇到此异常,因为此目录中的文件当前已被您自己的或其他应用程序读取。
就我而言,目标文件夹已经存在,所以我先将其删除,然后移动源文件夹。
我正在将 Webstorm 与 Remix 项目一起使用,当我尝试重命名文件夹时,我必须停止该项目,进行重命名重构,然后启动项目。