如何使用AsyncTask加载Android设备中的所有文件列表

时间:2017-11-03 12:48:42

标签: java android file android-asynctask nullpointerexception

我应该如何加载Android设备中存在的所有文件的列表。我发现很多Stack Overflow帖子显示了如何递归加载所有文件列表但我无法找到如何使用AsyncTaks加载。

这就是我加载所有文件列表的方式。

但很多时候我在行号111- if(file.listFiles().length==0)

得到Null Pointer Exception
 public class load extends AsyncTask<Void, Void, Void>{


        @Override
        public Void doInBackground(Void... voids) 
        {

            load_items();

            return null;
        }

        public void load_items() 
        {

            getListFiles(new File(Environment.getExternalStorageDirectory().getPath()));
        }

    }
    private List<File> getListFiles(File parentDir) {
        ArrayList<File> inFiles = new ArrayList<File>();
        File[] files = parentDir.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                if(file!=null && file.listFiles()!=null)
                {
                    if(file.listFiles().length==0) // Line 111
                    {
                      //DO Something                       
                    }
                    else
                    {
                        inFiles.addAll(getListFiles(file));
                    }
                }
            } else if(file.canWrite()){
              // Do Something       
               inFiles.add(file);           
            }
        }
        return inFiles;
    }

我无法弄清楚错误是什么。任何帮助都会非常棒。

0 个答案:

没有答案