我对与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");
答案 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"));
希望有所帮助!