FilenameUtils.getExtension比较返回false

时间:2015-11-12 12:42:11

标签: java swing csv string-comparison jfilechooser

我对与FilenameUtils.getExtension的比较感到非常困惑。

我有一个文件选择器fc,我想确保扩展名为.csv

JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION &&
    fc.getSelectedFile().isFile() &&
    FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv") {
    // Do stuff
}

经过一些调试后,我发现最后一个语句负责没有执行if语句。

FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv"

但是我做了很多System.out.println() s并得到了

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()));

打印csv。但是当我输入时仍然返回false:

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv");

2 个答案:

答案 0 :(得分:6)

您无法将字符串的内容与==进行比较。您必须使用equals(...)方法:

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));

答案 1 :(得分:4)

你面临的问题是众所周知的问题。您正在尝试将字符串与== - 运算符进行比较。而不是你应该使用String的equals-function

这两种方式之间有一点区别: 如果您愿意,可以阅读此question,并在那里找到答案,看看两者之间的区别。

应用于该代码应该如下:

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));

希望有所帮助!