【问题标题】:FilenameUtils.getExtension comparison returns false [duplicate]FilenameUtils.getExtension 比较返回 false [重复]
【发布时间】:2016-02-13 18:58:04
【问题描述】:

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

【问题讨论】:

    标签: java swing csv string-comparison jfilechooser


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      这两种方式有一点不同: 如果您愿意,可以阅读此 question 并有答案以了解两者之间的区别。

      应用于该代码,它应该如下所示:

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

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 2015-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        相关资源
        最近更新 更多