我正在尝试开发一个可以列出所有应用程序的缓存大小并清理缓存的Android应用程序,清理缓存工作正常,但列出所有具有缓存的应用程序是问题。所以我试图检查应用程序包是否有缓存文件夹,如果它退出然后我正在尝试检查缓存文件夹是否为空,但我正在强制关闭,我也使用了AsyncTask,但获得了Force关闭,我检查了我的代码为普通的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);
}
});
AsyncTask没有问题我用其他东西检查了代码,没关系。请帮助我解决这个谜题。
答案 0 :(得分:0)
试试这个,
.....
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;
}