【发布时间】:2012-04-04 00:32:17
【问题描述】:
我需要重命名一个文件(将其保存在同一目录中); 我似乎无法找到一种方法来查看我的程序是否具有所需的权限:
Files.isWritable(directory) && Files.isWritable(oldFile);
无论运行用户是否具有写入文件的权限,总是返回 true(我猜他们只检查文件是否为只读,即使这违反了 javadoc 中规定的合同); 我没有在安全管理器下运行,所以我不能打电话
System.getSecurityManager.checkDelete(oldFile.toString());
我需要检查几个文件的重命名是否会(可能)成功,所以我不能只是尝试捕获异常。
有出路吗?显然,便携式解决方案会很受欢迎,但我会选择特定于 Windows 的解决方案...
【问题讨论】:
-
这可能会对你有所帮助。[stackoverflow.com/questions/736859/…
-
好吧,对于“可能”,我认为
canWrite()- 和exists()- 和isDirectory()- (和类似的)方法就足够了。如果你想重命名我会推荐一个try-catch-block,因为对于IO我总是使用一个try-catch-block(有很多事情可能出错)......使用你的确切代码,它会不过更容易给出更准确的答案。 -
@AnanthaKrishnan 我会避免调用本地方法来检查我是否可以写入文件,这似乎相当迟钝......
-
@ALexS 我想旧的 IO api 会产生与新的相同的结果,所以 path.toFile().canWrite() 应该返回 true,如果 Files.isWritable(path) 返回 true。 ..
标签: java windows permissions