我試圖遞歸獲得Java中的目錄結構,在Android模擬器,用我認爲是一個代碼相當簡單一點:的Java/Android的遞歸文件空指針異常
public void list(File file)
{
if(file.isDirectory())
{
File[] children = file.listFiles();
for(int i = 0; i < children.length; i++)
{
Log.d(TAG, children[i].getName());
list(children[i]);
}
}
}
它的工作原理罰款(到目前爲止),除非我在模擬器的SD卡的根目錄中運行它,此時它會拋出一個空指針異常。 LogCat聲稱在方法調用它時引發它,但我必須將整個for循環包裝在try/catch塊中才能捕獲異常。
我已經嘗試了大約六種同一主題的排列,上面是我可以想到的最平淡和最安全的方式,但他們都拋出了這個錯誤。我要麼做一些愚蠢的事情,要麼就是模擬器的SD卡的根目錄中存在一個奇怪的對象,該對象報告爲目錄,但會返回一個具有.listFiles()值的僞造值。那個.android_security肯定看起來有點時髦。
難道有人會告訴我哪個是哪一個?
其他人回答了這個問題(空檢查),但這是原因。如果出於某種原因無法列出文件,File.listFiles()將返回null(而不是空數組)。一個例子可能是安全權限禁止,另一個可能是無效的符號鏈接。出於某種原因,儘管類中的其他方法在類似的情況下執行,但它不會拋出java.io.IOException。 – 2011-03-28 23:45:43