用于检查文件扩展名是否为.txt的程序

时间:2013-01-26 11:13:46

标签: java swing awt jfilechooser file-extension

我编写了一个带有awt文本字段和按钮的java代码,如果单击该按钮,我可以使用JFileChooser浏览文件。它需要检查文件是否具有“.txt”扩展名。我编写了下面的代码,但没有得到验证。

我哪里错了?请帮助确定我错在哪里。

         try{
            final JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(null);
            chooser.addChoosableFileFilter(new FileFilter() {
            public String getDescription() {
                return "*.txt";
            }
            public boolean accept(File filename)
            {

                if(filename.getName().endsWith(".txt")){
                    return true;
                }
                else{
                System.out.println("Browsed dest file extension must be .txt");
                return false;
                }}
            });
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(f,"Exception occurred");
        }

2 个答案:

答案 0 :(得分:6)

你的问题是:

chooser.showOpenDialog(null);

停止执行代码,直到用户选择文件。添加FileFilter后添加此行,并且传送工作正常。

小解释:

方法showOpenDialog(Component c)阻止当前线程的执行,直到用户选择文件后执行用户操作和下一行代码。如果您在再次添加FileFilter showOpenDialog之后调用它,它将按预期工作。

答案 1 :(得分:4)

我建议对@Override方法使用accept注释 - 请参阅此链接@Override explained in Oracle Documentation

另外,最好使用filename.getName().toLowerCase().endsWith(".txt")代替filename.getName().endsWith(".txt"),以确保扩展名为.TXT的文件也会通过过滤器。