2015-11-12 77 views
2

FilenameUtils.getExtension这个比较我很困惑。我想要确保扩展名为.csvFilenameUtils.getExtension比较返回false

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"); 

回答

4

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

你们之间有一点点区别这两种方式: 如果你想要你可以读这question,并有答案看到两者之间的区别。

应用于代码应该看起来像:

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

希望帮助!

6

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

System.out.println(FilenameUtils.getExtension(fc.getSelectedFile().getName()).equals("csv")); 
相关问题