外部存储目录奇怪的bug?

时间:2014-12-22 20:21:52

标签: android sd-card

以下代码在Galaxy S4上运行正常,但我收到了来自注释3设备的错误报告,说明"#4367行的空指针异常"

我无法理解为什么会发生这种情况,因为for循环是用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();
                    }

2 个答案:

答案 0 :(得分:1)

文件数组本身必须在某个合法索引处具有null。您需要围绕它进行编码。类似的东西:

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

答案 1 :(得分:0)

From the documentation of getExternalFilesDirs

  

如果存储设备不可用,则返回的路径可能为空。

所以你应该检查null:

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();
        }
    }
}