Moo*_*sez 2 java csv swing jfilechooser string-comparison
我对这种比较感到非常困惑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
}
Run Code Online (Sandbox Code Playgroud)
经过一些调试后,我发现最后一个语句负责没有执行if语句.
FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv"
Run Code Online (Sandbox Code Playgroud)
但是我做了很多,System.out.println()
并得到了
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()));
Run Code Online (Sandbox Code Playgroud)
打印csv
.但是当我输入时仍然返回false:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()) == "csv");
Run Code Online (Sandbox Code Playgroud)
你无法比较字符串的内容==
.你必须使用这个equals(...)
方法:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));
Run Code Online (Sandbox Code Playgroud)
您面临的问题是众所周知的问题。您正在尝试将字符串与 == 运算符进行比较。取而代之的是,您应该使用String的equals 函数。
这两种方式之间有一点区别:如果您愿意,可以阅读此问题,并有答案以了解两者之间的区别。
应用于该代码它应该是这样的:
System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv"));
Run Code Online (Sandbox Code Playgroud)
希望有帮助!