사용이 코드는 .. 그것은 텍스트보기에서 파일 이름을 인쇄 할 루트 디렉터리와 모든 디렉터리와 하위 디렉터리를 통해 재귀 적으로 반복에서 시작합니다.
필요에 따라 텍스트 출력의 서식을 지정하십시오. 여기에, 좋아, 내가 그것을 나 자신 시도에 저항 할 수있는 작업 코드 : 여기
... 업데이트 논리이다.
다음은 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
응용 프로그램이 제대로 작동하겠습니까? :-) – aioobe
죄송합니다 @aioobe, 그것을 고쳐야했습니다 : P – theomega