【发布时间】:2013-03-05 11:55:41
【问题描述】:
我正在用 Java 开发一个 shell。这个shell可以执行命令find 'regex'。此命令递归查找名称与regex 匹配的所有文件。查找文件的方法是:
public void findFile(String regExp, String dirName) {
File dir = new File(dirName);
if (dir.canRead() == false)
return;
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile() == true)
if (file.getName().matches(regExp) == true)
System.out.println(file.getAbsolutePath());
if (file.isDirectory() == true && file.canRead() == true) {
findFile(regExp, file.getAbsolutePath());
}
}
}
但如果无法打开目录,此命令将失败。例如,在D:分区中,我有一个名为found.00的隐藏目录(这个目录可能属于系统),我无法打开这个目录。当方法遇到这个目录时,它会失败。如何查看目录是否属于系统无法打开?
【问题讨论】:
-
它可能无法涵盖所有无法打开的目录,但您可以检查
File#isHidden()。 -
不要使用
file.isFile() == true,而是使用file.isFile()。或者,如果您想查看是否有false:dir.canRead() == false,请使用!dir.canRead()。 -
@Jeffrey:我知道大型企业(>60000 人),其中 if( bool == true ) 是强制性的,而 if( b ) 是禁止的......
-
我知道,我只希望我的代码易于阅读。
标签: java permissions directory