我正在开发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()'。 – Vulcan 2013-03-16 21:33:12
而不是使用'file.isFile()== true',只需使用'file.isFile()'。或者,如果你想查看是否有'false':'dir.canRead()== false',只需使用'!dir.canRead()'。 – Jeffrey 2013-03-16 21:33:43
@Jeffrey:我知道大企业(> 60000人),其中,如果(布尔==真)是强制性的,如果(B)禁止... – Aubin 2013-03-16 21:36:50