Java FileFilter抽象类的使用

本文介绍如何通过自定义Java类实现文件过滤器FileFilter或FilenameFilter接口,以便在JFileChooser中筛选特定扩展名的文件。文章提供了一个具体的例子,展示了如何创建一个继承自FileFilter的OFileFilter类,并在JFileChooser中应用该过滤器。

Filefiter的使用

自己定义一个类实现FileFilter   或者FilenameFilter接口,在实现方法accept中自定义你需要的扩展名,它返回一个布尔值,这样就可以选择制定目录下的制定扩展名的文件。

总之Filefilter是抽象类,要使用就要继承它并且在子类实现它的全部方法或者部分方法.

具体代码的实现:

 import java.awt.*;

 import java.awt.event.*;

 import javax.swing.*;

 import javax.swing.filechooser.FileFilter;

 import java.io.*;

 public class OpenFileTester extends JFrame implements ActionListener

{

 private JMenuBar jMenuBar;

 private JMenu jMenu;

 private JMenuItem jMenuItem;

 

 public OpenFileTester(){

 jMenuBar=new JMenuBar();

 jMenu=new JMenu("文件");

 jMenuItem=new JMenuItem("打开");

 jMenuItem.addActionListener(this);

 jMenu.add(jMenuItem);

 jMenuBar.add(jMenu);

 setTitle("JFileChooser Demo");

 setJMenuBar(jMenuBar);

 setSize(new Dimension(300,200));

 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 }

 

 public void actionPerformed(ActionEvent e)

{

try{

      JFileChooser jf=new JFileChooser();

      jf.addChoosableFileFilter(new OFileFilter(".exe","exe文件"));

      jf.addChoosableFileFilter(new OFileFilter(".txt","txt文件"));

      int result=jf.showOpenDialog(null);

      }catch(Exception ex){

      ex.printStackTrace();

      }

      }

 

 public static void main(String[] args) //主方法

{

      new OpenFileTester().setVisible(true);

      }

 }

 JDK中的FileFilter相关:

 /*

 *OFileFilter继承自FileFilter抽象类,用以在JFileChooser类中实现文件过滤器

 */

 class OFileFilter extends javax.swing.filechooser.FileFilter

//OfileFilter继承了抽象类FileFilter,并实现其中所有的方法(实现部分依旧是抽象类(概念))

//FileFilter类的方法有两个:

abstract  boolean

accept(File f)
          
此过滤器是否接受给定的文件。

abstract  String

getDescription()
          
此过滤器的描述。

 

{

 private String strEnds;

 private String strDescription;

 

 public OFileFilter(String strEnds,String strDescription) //构造方法

{

      this.strEnds=strEnds;

      this.strDescription=strDescription;

      }

 

 public boolean accept(File file)

{

      if(file.isDirectory()) return true;

      String filename=file.getAbsolutePath();

      if(filename.toUpperCase().endsWith(strEnds.toUpperCase())){

      return true;

      }

else

{

      return false;

      }

   }

 

 public String getDescription()

{

 return this.strDescription;

    }

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值