2014-12-22 150 views
0

下面的代碼工作正常銀河S4,但我認爲「在行#空指針異常4367」外部存儲目錄奇怪的bug?

我不明白,因爲它會發生什麼理由收到一記3設備錯誤報告循環用fileArray.length進行測試;

我可能是錯的;請提供一些關於這個問題的建議。

謝謝。

enter image description here

    File fileArray[] = getExternalFilesDirs(null);  

        String fileArayAsPathArray[] = new String[fileArray.length]; 
        for(int i=0; i<fileArray.length; i++){ 
         fileArayAsPathArray[i] = fileArray[i].getAbsolutePath(); 
        } 

回答

0

From the documentation of getExternalFilesDirs

返回路徑可能爲空,如果存儲裝置是不可用的。

所以,你應該檢查空:

File fileArray[] = getExternalFilesDirs(null);  

if (filesArray != null) { 
    String fileArayAsPathArray[] = new String[fileArray.length]; 
    for(int i=0; i<fileArray.length; i++) { 
     if(fileArray[i] != null) { 
      fileArayAsPathArray[i] = fileArray[i].getAbsolutePath(); 
     } 
    } 
} 
1

文件陣列本身必須在一些法律指標有其內部空。你需要圍繞它編碼。例如:

List<String> fileArayAsPathList = new ArrayList<String>(); 
for(int i=0; i<fileArray.length; i++){ 
    if(fileArray[i] != null){ 
     fileArayAsPathList.add(fileArray[i].getAbsolutePath()); 
    } 
}