Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从SD卡列出文件和目录时出现NullpointerException_Android_File_List - Fatal编程技术网

Android 从SD卡列出文件和目录时出现NullpointerException

Android 从SD卡列出文件和目录时出现NullpointerException,android,file,list,Android,File,List,我试图在nexus7中列出sdcard中的所有文件,但遇到nullpointer异常 下面的代码在三星tab2中运行良好,但在nexus7中出现问题 如果有人有主意,请帮助我 ArrayList<String> listFolders = new ArrayList<String>(); ArrayList<String> listFiles = new ArrayList<String>(); String globalP

我试图在nexus7中列出sdcard中的所有文件,但遇到nullpointer异常

下面的代码在三星tab2中运行良好,但在nexus7中出现问题

如果有人有主意,请帮助我

    ArrayList<String> listFolders = new ArrayList<String>();
    ArrayList<String> listFiles = new ArrayList<String>();
    String globalPath = "";




     public void onClikButton(View v) {
            String path = Environment.getExternalStorageDirectory()+"/";

        getDirectory(path);
    }


    public void getDirectory(String path) {
        //String setPath = path;
        globalPath = path;
        Log.i("getDirectory","globalPath = " + globalPath);

        String[] splitPath = path.split("/");
        int count = splitPath.length;
        Log.i("getDirectory","globalPath count = " + count);
        if(count==3)
        {
            // Root
            btnBack.setVisibility(View.GONE);
        }
        else
        {
            btnBack.setVisibility(View.VISIBLE);
        }

        File directory = new File(globalPath);
        File[] listDirectory =null;

        if(directory.exists()) {
                  listDirectory = directory.listFiles();
       for(int i=0; i<listDirectory.length;i++)
        {
        File getFolder = listDirectory[i];
        if(getFolder.isDirectory())
        {
            listFolders.add(getFolder.getName());
        }
       }
    }
     } 
提前谢谢

更换

String path = Environment.getExternalStorageDirectory()+"/"; 
String path = Environment.getExternalStorageDirectory()+"/"; 


用这个替换你的onclick按钮

public void onClikButton(View v) {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath();

    getDirectory(path);
}
请执行以下操作:

替换

if(count==3)

替换

if(count==3)


我在堆栈溢出上发现了这个…可能会有帮助

似乎是一个好消息。MTP缓存在手机重新启动之前会过期

解决办法是:

清除媒体存储应用程序的数据

使用应用程序强制更新

或者干脆避免使用USB。这个问题不会影响其他访问文件的方法。例如,尝试传输文件


无论如何,所有内容都是指向/storage/emulated/legacy的链接,它本身就是指向/mnt/shell/emulated/0的链接,其中包含文件

您在哪里得到异常?您在日志中看到了什么?Log.igetDirectory,globalPath=+globalPath;记录的路径是什么?您添加了正确的权限吗..我正在日志12-26 15:49:53.580:I/getDirectory6322:globalPath=/storage/emulated/0/。首先检查给定的路径是否可用它是无效的,因为路径是字符串变量,并且我们分配了文件类型。请再次检查。感谢回复@nitesh goel。我的代码在三星tab2中工作,但在nexus7中不工作。是的,这是nexus设备上的一个特殊问题。您可以查看。
Environment.getExternalStorageDirectory()
if(count==3)
if(path.equals(Environment.getExternalStorageDirectory().getAbsolutPath()))