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