使用此代碼..它從根目錄開始,遞歸遍歷所有目錄和子目錄以在文本視圖中打印文件名。
根據您的需要設置文本輸出的格式。這裏是邏輯...
更新:好吧,我忍不住嘗試一下自己,這裏是工作代碼。
這裏是AsyncTask內部類,它定義在你有你的textView的活動中,你必須在其中顯示文件名。 AsyncTask類使用上面給出的函數,因此請保持原樣,保存在同一個活動中。
private class fileNames extends AsyncTask<String, Integer, String> {
TextView tv,tv_temp;
File f;
ProgressDialog pg;
public fileNames(File f,TextView tv, Context c) {
this.f=f;
this.tv=tv;
tv_temp=new TextView(c);
pg =new ProgressDialog(c);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pg.setTitle("loading");
pg.show();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
System.out.println("Start : fileNames : doInBackground");
printFileNames(f,tv_temp);
return tv_temp.getText().toString();
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
tv.setText(result);
pg.dismiss();
}
}
功能定義:
public void printFileNames(File fName,TextView tv){
int count=0;
if(fName.listFiles()!=null)
for (File f : fName.listFiles()) {
if (f.isDirectory()){
String name = f.getName();
System.out.println("Dir:"+ name + "\n");
tv.setText(tv.getText().toString()+"\n" + "Dir:"+ name + "\n");
printFileNames(f, tv);
}else{
String name = f.getName();
System.out.println(" File:"+ name +"\n");
tv.setText(tv.getText().toString()+ " File:"+ name +"\n");
count++;
}
}
}
在活動把這個代碼的任何地方,[在你的onCreate(),說]:
TextView fileNameTextView = (TextView)findViewById(R.id.thisfile);
File sdCardRoot = Environment.getExternalStorageDirectory();
new fileNames(sdCardRoot,fileNameTextView ,YourCurrentActivity.this).execute();
發佈您的代碼,你有什麼早期的嘗試? – user370305 2012-07-18 09:04:32
您是否威脅應用程序正常工作? :-) – aioobe 2012-07-18 09:05:16
對不起@aioobe,不得不修復它:P – theomega 2012-07-18 09:10:39