gpt4 book ai didi

java - FilenameFilter,搜索文件夹

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:15 25 4
gpt4 key购买 nike

我有这个类实现了 FilenameFilter

package Logic;

import java.io.File;
import java.io.FilenameFilter;

public class Filter implements FilenameFilter {

String name;

public Filter(String name) {
this.name = name;

}
@Override
public boolean accept(File dir, String filename) {
return name.contains("bluetooth");
}
}

我在这个方法中使用了这个类:

public String searchForBluetoothFolder() {

String folderNameToSearchFor = "bluetooth";
File root = sdCard;
FilenameFilter filter = new Filter(folderNameToSearchFor);

String[] bluetoothFolder = root.list(filter);

for(int i = 0; i < bluetoothFolder.length; i++) {
Log.i("Bluetooth: ", bluetoothFolder[i]);
}


return "";
}

在 for 循环中,输出只是根目录中的所有 文件,而不是那些以蓝牙为名称的文件。我在这里做错了什么?

最佳答案

这是因为您正在检查 name 是否包含“bluetooth”,而不是 fileName 是否包含单词“bluetooth”

return name.contains("bluetooth"); 应该改为 return filename.contains("bluetooth");

但是,按照您尝试实现的方式,将其更改为 return filename.contains(name); 以便您实际检查您的 fileName 是否包含您指定的 name

另外请记住,使用 contains() 时,“bluetooth”可能不会被评估为“Bluetooth”或“blueTooth”。如果您想要不区分大小写的搜索,那么我建议您对您的姓名进行标准化。将 name 设置为小写并使用 filename.toLowerCase().contains(name.toLowerCase()) 检查。像这样的东西:

public class Filter implements FilenameFilter {
String name;

public Filter(String name) {
this.name = name;

}
@Override
public boolean accept(File dir, String filename) {
//If you want to perform a case-insensitive search
return filename.toLowerCase().contains(name.toLowerCase());
}
}

关于java - FilenameFilter,搜索文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12173521/

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