FilenameUtils.getExtension 比较 returns 错误
FilenameUtils.getExtension comparison returns false
我对这种与 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()
并且得到了
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()));
打印 csv
。但是当我输入时仍然 returns false:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv");
您不能将字符串的内容与==
进行比较。您必须为此使用 equals(...)
方法:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));
您面临的问题是众所周知的问题。您正在尝试将字符串与 == 运算符进行比较。而不是你应该使用 equals-function of String.
你这两种方式有点区别:
如果你愿意,你可以阅读这个 question 并找到答案以了解两者之间的区别。
应用于该代码应该如下所示:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));
希望对您有所帮助!
我对这种与 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()
并且得到了
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()));
打印 csv
。但是当我输入时仍然 returns false:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv");
您不能将字符串的内容与==
进行比较。您必须为此使用 equals(...)
方法:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));
您面临的问题是众所周知的问题。您正在尝试将字符串与 == 运算符进行比较。而不是你应该使用 equals-function of String.
你这两种方式有点区别: 如果你愿意,你可以阅读这个 question 并找到答案以了解两者之间的区别。
应用于该代码应该如下所示:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));
希望对您有所帮助!