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

时间:2014-03-26 00:48:42

标签: java netbeans

我从计算机上的文件夹中获取文件列表,然后将其放入名为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

3 个答案:

答案 0 :(得分:1)

listOfFiles的类型为Files,而不是Strings

答案 1 :(得分:1)

你必须手动循环它。

您可以创建新的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");
}

答案 2 :(得分:0)

您必须将文件的名称保留为String。假设您正在一个不包含任何同名文件的文件夹中搜索。因此,使用HashSet或Map可能更容易。他们得到了contains()方法并通过O(1)中的表进行搜索。