我想在我的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());
}
}
这里只发生第一级搜索。这个条件if (temp_file.isFile() && temp_file.listFiles() != null)
始终返回false,因此不会发生递归调用。 请帮我修理一下。谢谢你的回答和时间。
答案 0 :(得分:2)
如果temp_file.isFile()
返回true,则表示它是一个文件,因此temp_file.listFiles()
自动变为null,从而使整个语句为false。因此,您的组合语句始终返回false。您需要的是||
代替&&
。