![](/img/trans.png)
[英]How to avoid java.nio.file.AccessDeniedException when using java.nio.file.Files.move()?
[英]java.nio.file.AccessDeniedException while using Files.move()
我正在做一個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(path1, path2, StandardCopyOption.ATOMIC_MOVE)
我有同樣的異常調用Files.move(path1, path2, StandardCopyOption.ATOMIC_MOVE)
。
我的目錄是非空的並且包含常規文件,所以也許這就是它不能在這里使用的原因? 我在理解“要求移動其條目”的措辭方面遇到了問題。 這是什么情況?
當目錄移動到同一硬盤驅動器(和相同分區)的其他位置時,不必移動文件。 Files.move()
方法的作用基本上是重命名目錄並保持文件不變。
順便說一下,您可能會遇到此異常,因為此目錄中的文件當前由您自己或其他應用程序讀取。
在我的情況下,目標文件夾已經存在,所以我先刪除它,然后移動源文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.