我編寫了遞歸掃描文件夾以搜索文件並對其進行處理的函數(foundFile()
)。如何知道遞歸文件掃描的當前文件夾深度
問題是當函數找到別名文件夾(例如在mac中,當我試圖在/Volumes
文件夾中循環時)。腳本無限循環(我不知道爲什麼)。是否有可能知道遞歸的當前「深度」並停在(即)20?
,甚至停止在特定情況下,循環(別名文件夾)
private String[] types = { ".wav", ".mp3", ".ogg", ".wave", ".wma"};
public void listFile(String pathname) {
File f = new File(pathname);
File[] listfiles = f.listFiles();
if(listfiles!=null){
for (int i = 0; i < listfiles.length; i++) {
if (listfiles[i].isDirectory()) {
File[] internalFile = listfiles[i].listFiles();
if(internalFile!=null){
for (int j = 0; j < internalFile.length; j++) {
for(int h=0;h<types.length;h++){
if(internalFile[j].getAbsolutePath().endsWith(types[h])){
found.put(types[h], found.get(types[h])+1);
foundFile(internalFile[j]);
}
}
if (internalFile[j].isDirectory()) {
String name = internalFile[j].getAbsolutePath();
listFile(name);
}
}
}
} else {
processed+=1;
for(int j=0;j<types.length;j++){
if(f.getAbsolutePath().endsWith(types[j])){
this.found.put(types[j], found.get(types[j])+1);
foundFile(listfiles[i]);
}
}
}
}
}
}
你可以簡單地通過深度參數手你使用'listFile'方法,在每次調用時增加它,並在達到所需深度時停止遞歸。 – qqilihq 2014-09-30 19:00:32
您必須將級別參數傳遞給每個遞歸調用,並在執行遞歸時將其遞增。 – rafalopez79 2014-09-30 19:00:57
這樣你可以計算出你訪問過多少個文件夾。不是深度 – 2014-09-30 19:02:23