如何在android中检查文件夹是否有子文件夹?

如何在android中检查文件夹是否有子文件夹?,android,caching,Android,Caching,我正在尝试开发一个android应用程序,可以列出所有应用程序的缓存大小并清理缓存,清理缓存工作正常,但列出所有有缓存的应用程序是个问题。所以我试着检查应用程序包是否有缓存文件夹,如果它存在,那么我试着检查缓存文件夹是否为空,但我正在强制关闭,我也使用了AsyncTask,但强制关闭,我检查了我的代码,以获取普通java代码,它正在工作,不知道是什么问题,请指导我,提前感谢 btn.setOnClickListener(new View.OnClickListener() {

我正在尝试开发一个android应用程序,可以列出所有应用程序的缓存大小并清理缓存,清理缓存工作正常,但列出所有有缓存的应用程序是个问题。所以我试着检查应用程序包是否有缓存文件夹,如果它存在,那么我试着检查缓存文件夹是否为空,但我正在强制关闭,我也使用了AsyncTask,但强制关闭,我检查了我的代码,以获取普通java代码,它正在工作,不知道是什么问题,请指导我,提前感谢

btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            new AsyncTask<Void, Void, Void>() 
            {
                @Override
                protected void onPreExecute() 
                {
                    pd = ProgressDialog.show(MainActivity.this, "Loading..",
                            "Please Wait", true, false);
                }//End of onPreExecute method

                @Override
                protected Void doInBackground(Void... params) 
                {
                    File file = new File("/data/data/com.android.browser/cache");


                    if(file.isDirectory()){

                        if(file.list().length>0){

                            System.out.println("Directory is not empty!");

                        }else{

                            System.out.println("Directory is empty!");

                        }

                    }else{

                        System.out.println("This is not a directory");

                    }

                    return null;
                }//End of doInBackground method

                @Override
                protected void onPostExecute(Void result) 
                {
                    pd.dismiss();

                }//End of onPostExecute method
            }.execute((Void[]) null);
        }
    });
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
新建异步任务()
{
@凌驾
受保护的void onPreExecute()
{
pd=ProgressDialog.show(MainActivity.this,“加载…”,
“请稍候”,对,错);
}//onPreExecute方法的结束
@凌驾
受保护的Void doInBackground(Void…参数)
{
File File=新文件(“/data/data/com.android.browser/cache”);
if(file.isDirectory()){
如果(file.list().length>0){
System.out.println(“目录不是空的!”);
}否则{
System.out.println(“目录为空!”);
}
}否则{
System.out.println(“这不是目录”);
}
返回null;
}//底底法
@凌驾
受保护的void onPostExecute(void结果)
{
pd.解散();
}//onPostExecute方法的结束
}.执行((作废[])无效);
}
});
AsyncTask没有问题,我用其他东西检查了代码,没问题。请帮我解开这个谜。

试试这个

     .....
 List<File> files = getListFiles(new File("YOUR ROOT")); 
 ....
 private List<File> getListFiles(File parentDir) {
    ArrayList<File> inFiles = new ArrayList<File>();
    File[] files = parentDir.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            inFiles.addAll(getListFiles(file));
        } else {
            if(file.getName().endsWith(".csv")){
                inFiles.add(file);
            }
        }
    }
    return inFiles;
}
。。。。。
列表文件=getListFiles(新文件(“您的根”);
....
私有列表getListFiles(文件parentDir){
ArrayList inFiles=新的ArrayList();
File[]files=parentDir.listFiles();
用于(文件:文件){
if(file.isDirectory()){
addAll(getListFiles(file));
}否则{
if(file.getName().endsWith(“.csv”)){
inFiles.add(文件);
}
}
}
返回填充;
}