gpt4 book ai didi

android递归列出sd卡中的文件

转载 作者:行者123 更新时间:2023-11-29 22:08:30 27 4
gpt4 key购买 nike

我想在我的 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,因此不会发生递归调用。请帮我解决它。感谢您的回答和时间。

最佳答案

如果 temp_file.isFile() 返回 true 那么这意味着它是一个文件,因此 temp_file.listFiles() 自动变为 null 从而使您的整个语句为 false。因此,您的组合语句始终返回 false。您需要的是 || 代替 &&

关于android递归列出sd卡中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com