1
我想列出位于应用程序目录内的每个文件夹。 到目前为止,我可以扫描目录并列出已创建的每个文件夹,并将存储在应用程序目录中的每个文件夹记录到控制台。在Android应用程序目录中创建文件夹列表
我首先检查用户文件夹是否存在。如果不是,它会创建它,然后它将变量“homeDir”设置为用户文件夹。
ArrayList<HashMap<String, String>> groupsList;
File homeDir;
private void isUserFolderExist() {
File m_applicationDir = new File(this.getFilesDir() + "");
File Userfolder = new File(m_applicationDir + "/" + uid);
homeDir = Userfolder;
//File directory = getDir(uid, Context.MODE_PRIVATE);
//Log.v("creating", uid + " Folder");
if (!Userfolder.exists()) {
Userfolder.mkdir();
} else{
//Log.v("Directory", "exists");
}
}
我试图创建一个ArrayList的目录中找到的每个文件夹。在AsyncTask中使用下面的代码。我遵循了几个教程,这些教程展示了如何从json文件创建信息列表,并试图应用相同的方法。
class folders extends AsyncTask<String, String, String> {
protected String doInBackground(String... args) {
try {
File directory = homeDir;
File[] files = directory.listFiles();
for(int i = 0; i < files.length;i++){
String dirId = Integer.toString(i);
String name = files[i].getName();
HashMap<String, String> groups = new HashMap<String, String>();
groups.put("dirId", dirId);
groups.put("name", name);
groupsList.add(groups);
}
}catch (NullPointerException e){
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url) {
runOnUiThread(new Runnable() {
public void run() {
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, groupsList,
R.layout.list_item, new String[] { "dirId", "name"}, new int[] {
R.id.dirId, R.id.name});
setListAdapter(adapter);
}
});
}
}
当碰到groupsList.add(groups)时,遇到NullPointerException异常;
04-01 16:10:12.273: W/System.err(336): java.lang.NullPointerException
04-01 16:10:12.593: W/System.err(336): at com.example.folder.MainActivity$folders.doInBackground(MainActivity.java:433)
04-01 16:10:12.683: W/System.err(336): at com.example.folder.MainActivity$folders.doInBackground(MainActivity.java:1)
04-01 16:10:12.723: W/System.err(336): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-01 16:10:12.733: W/System.err(336): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-01 16:10:12.733: W/System.err(336): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-01 16:10:12.733: W/System.err(336): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
04-01 16:10:12.733: W/System.err(336): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
04-01 16:10:12.733: W/System.err(336): at java.lang.Thread.run(Thread.java:1096)
我还没有找到为什么会发生这种情况的运气。
这是因为我想在AsyncTask中做到这一点?
任何帮助将不胜感激。
对不起,我错过了一条线。我已经初始化groupList以下 'ArrayList> groupsList;' –
woody1990
这是正确的先生。 Hi @hariharan先生,我是来自Villupuram的sethu。我在KCT做过UG。 – Sethu
@ woody1990这只是不能初始化。你必须初始化像我的答案 – Hariharan