簡體   English   中英

Java / Android遞歸文件空指針異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM