【发布时间】:2010-06-10 09:17:43
【问题描述】:
以下代码遍历所有目录和子目录,只输出 .java 文件;
import java.io.File;
public class DirectoryReader {
private static String extension = "none";
private static String fileName;
public static void main(String[] args ){
String dir = "C:/tmp";
File aFile = new File(dir);
ReadDirectory(aFile);
}
private static void ReadDirectory(File aFile) {
File[] listOfFiles = aFile.listFiles();
if (aFile.isDirectory()) {
listOfFiles = aFile.listFiles();
if(listOfFiles!=null) {
for(int i=0; i < listOfFiles.length; i++ ) {
if (listOfFiles[i].isFile()) {
fileName = listOfFiles[i].toString();
int dotPos = fileName.lastIndexOf(".");
if (dotPos > 0) {
extension = fileName.substring(dotPos);
}
if (extension.equals(".java")) {
System.out.println("FILE:" + listOfFiles[i] );
}
}
if(listOfFiles[i].isDirectory()) {
ReadDirectory(listOfFiles[i]);
}
}
}
}
}
}
这样有效吗?有什么办法可以提高速度?
欢迎所有想法。
【问题讨论】:
-
有一个错误:没有扩展名的文件将被视为程序看到的最后一个扩展名。无需调用 listFiles 两次。使用 .getPath() 而不是 .toString() 来获取文件路径(结果相同,可读性更好)
标签: java performance