私のSDカード内の特定のファイルを検索したいと思います。だから私は完全なファイルを一覧表示し、パターンを検索しようとしています。以下のコードを参照してくださいアンドロイドはsdカードのファイルを再帰的に表示します
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String root_sd = Environment.getExternalStorageDirectory().toString();
file = new File(root_sd);
listfiles(new File(root_sd));
}
public void listfiles(File file) {
//file = new File(path);
// file = new File(root_sd) ;
File list[] = file.listFiles();
Log.i("DIR", "PATH" +file.getPath());
for (int i = 0; i < list.length; i++) {
// myList.add(list[i].getName());
File temp_file = new File(file.getAbsolutePath(),list[i].getName());
Log.i("DIR", "PATH" +temp_file.getAbsolutePath());
if (temp_file.isFile() && temp_file.listFiles() != null) {
Log.i("inside", "call fn");
listfiles(temp_file);
} else {
if (list[i].getName().toLowerCase().contains("pattern1"))
Log.i("File", i + list[i].getName());
if (list[i].getName().toLowerCase().contains("pattern2"))
Log.i("File", i + list[i].getName());
}
}
ここでは第1レベルの検索のみが行われています。この条件は、常にfalseを返し、再帰呼び出しは行われません。if (temp_file.isFile() && temp_file.listFiles() != null)
修正してください。あなたの答えと時間をありがとう。
'isFile()'ではなく '.isDirectory()'ですか?それがファイルであるときは、リストは 'null'でなければなりません。ディレクトリのみを一覧表示できます。 – zapl