以下代碼遍歷所有目錄和子目錄,並輸出.java文件;從目錄中讀取文件並從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()來獲取文件路徑(結果相同,可讀性更好) – unbeli 2010-06-10 09:22:45
@unbeli謝謝。 – Adnan 2010-06-10 09:24:50