[英]Java/Android recursive file null pointer exception
我試圖在Android模擬器上遞歸地用Java獲得目錄結構,我認為這是相當簡單的代碼:
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的確看起來有些變化。
有人會告訴我哪一個是哪一個嗎?
我會更加防御,並以此方式編寫:
public void list(File file)
{
if (file != null && file.isDirectory())
{
File[] children = file.listFiles();
if (children != null)
{
for(int i = 0; i < children.length; i++)
{
if (children[i] != null)
{
Log.d(TAG, children[i].getName());
}
list(children[i]);
}
}
}
}
有趣:是您的Log類,還是Android上常用的日志記錄解決方案?
由於SD卡不可用,您可能會得到null pointer exceptions
(也許是因為調試時手機已連接到PC?)
我之前也遇到過類似的錯誤,這就是原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.