![](/img/trans.png)
[英]both File.isFile() and File.isDirectory() is returning false
[英]File.isDirectory and isFile both false
我正在编写一个Java应用程序,其中列出了目录内容。 当列出目录时,.isDirectory()方法的行为对于项目返回false,我很确定目录。
public List<DefaultMutableTreeNode> getNodes(String path)
{
List<DefaultMutableTreeNode> nodes = new ArrayList<>();
File directory = new File(path).getAbsoluteFile();
File[] contents = directory.listFiles();
for (File item : contents)
{
if (item.isDirectory())
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode(item.getName());
node.add(new DefaultMutableTreeNode("Placeholder..."));
nodes.add(node);
}
else
{
nodes.add(new DefaultMutableTreeNode(item.getName()));
}
}
return nodes;
}
上面的代码总是运行到else分支。 如果替换循环,将得到更奇怪的结果:
for (File item : contents)
{
System.out.printf("%s - directory? %b file? %b %n", item.getAbsoluteFile().getPath(), item.isDirectory(), item.isFile());
}
输出为:
/ storage / other-目录? 虚假文件? 假
/ storage / games-目录? 虚假文件? 假
/ storage / apps-目录? 虚假文件? 假
/ storage / testfile-目录? 虚假文件? 假
如果我在/ storage目录中列出文件,那么很显然,除了testfile之外,其他所有目录都是目录。
我究竟做错了什么?
为避免混淆,/ storage是/中的实际目录。 不是错字。
问题的原因是配置了错误的访问权限。
如果运行应用程序的用户没有执行权限,则isDirectory,isFile和exist将返回false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.