File.getName()没有正确地与String进行比较

时间:2014-12-14 04:54:07

标签: java string if-statement arraylist

我在类中有一个arrayList,并且有一个getter。我需要创建一个方法,该方法返回一个arrayList,该arrayList填充了第一个arrayList中与String arg同名的所有文件。这就是我提出来的。

ArrayList<File> dirs = new ArrayList<File>(); // filled with files

public ArrayList<File> getDirectoriesNamed(String fileName) {
    ArrayList<File> files = new ArrayList<File>();
    for (File file : dirs) {
        if (file.getName() == fileName) //problem is here
            files.add(file);
    }
    return files;
}

然而,当我尝试这个时,我得到一个空的arrayList。而且我发现原因是因为if声明...有什么理由说我不应该看到它不起作用吗?

2 个答案:

答案 0 :(得分:0)

您正在使用'=='比较两个字符串,使用file.getName().equals(fileName)

答案 1 :(得分:-1)

两件事......

1)确保包含扩展名,例如filename.txt作为String fileName。

2)对象应该与.equals()进行比较,如果它是一个字符串并且您担心有.equalsIgnoreCase()。我很确定==对你来说不是问题,即使对象应该以不同的方式进行比较==在java中对某些字符串对象有效。请注意,仅仅因为它起作用并不意味着它是正确的。