我有以下代码片段:
public class ExampleClass {
public static void main(String[] args) throws FileNotFoundException {
String filePath = args[0];
File file = new File(filePath);
if (!file.exists())
throw new FileNotFoundException();
if (file.canWrite())
System.out.println(file.getAbsolutePath() + ": CAN WRITE!!!");
else
System.out.println(file.getAbsolutePath() + ": CANNOT WRITE!!!!!");
if (file.canRead())
System.out.println(file.getAbsolutePath() + ": CAN READ!!!");
else
System.out.println(file.getAbsolutePath() + ": CANNOT READ!!!!!");
if (file.canExecute())
System.out.println(file.getAbsolutePath() + ": CAN EXECUTE!!!");
else
System.out.println(file.getAbsolutePath() + ": CANNOT EXECUTE!!!!!");
}
}
它可以在Linux操作系统中运行,但问题是它在windows7中不起作用。所以问题是:有人知道一种方法来独立检查 Java 操作系统中文件的权限吗?
这可能是由某些东西(例如防病毒产品)以不一致的方式“调解”文件访问引起的。
当然,很难相信 JavaFile.canXxxx()
方法是一般来说在任何版本的 Windows 上都会损坏。
UPDATE- 我收回之前说过的话。读此 Sun 错误报告 https://bugs.java.com/bugdatabase/view_bug?bug_id=6203387……然后哭泣。简而言之,这是一个 Windows 错误,Sun 决定不解决它。 (但是新的 Java 7 APIdo工作 ...)
FWIW,我认为尝试检查这样的文件访问权限是不好的做法。最好只是尝试使用该文件,并在发生异常时捕获异常。看https://stackoverflow.com/a/6093037/139985 https://stackoverflow.com/a/6093037/139985根据我的推理。 (现在我们还有另一个原因......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)