在目录列表数组中查找字符串



我从计算机上的一个文件夹中获取文件列表,并将其放入名为listOfFiles的数组中。

我想尝试使用字符串在文件夹中查找文件名。

  • 如果它确实找到了文件,我需要它说"匹配"
  • 如果它没有找到文件(现在正在发生),它说"不匹配"

我的代码现在一直说它是"不匹配",即使我已经使用了我正在搜索的确切文件名。

代码:

File folder = new File(txtPDFLocation.getText());
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
    if (listOfFiles[i].isFile()) {
        System.out.println(listOfFiles[i].getName());
    } 
    else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
    }
}
//Try to match file to email address
if(Arrays.asList(listOfFiles).contains("Text1.txt")) {
    System.out.println("MATCH");
}
else {
    System.out.println("NOT MATCHED");
}
控制台:

Text1.txt
NOT MATCHED

你必须手动循环。

你可以创建新的for循环,或者你甚至可以在现有的for循环中检查它。

下面是工作示例:

File folder = new File("");
File[] listOfFiles = folder.listFiles();
boolean isItThere = false;
for (File file : listOfFiles) {
    if (file.isFile()) {
        if (file.getName().equals("Text1.txt")) {
            isItThere = true;
        }
        System.out.println(file.getName());
    } else if (file.isDirectory()) {
        System.out.println("Directory " + file.getName());
    }
}
//Try to match file to email address
if (isItThere) {
    System.out.println("MATCH");
} else {
    System.out.println("NOT MATCHED");
}

listOfFiles的类型是文件,而不是字符串

您必须将文件的名称保持为字符串。假设您正在搜索的文件夹中不包含任何具有相同名称的文件。因此,使用HashSet或Map可能更容易。他们获得了contains()方法并在0(1)中查找Table。

相关内容

  • 没有找到相关文章

最新更新