文章收藏-FAQ 位置:电脑学习网

多线程删除指定目录及子目录下所有指定文件

    import java.io.File;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;

    /*一个简单的文件删除器
     *作用:将指定目录的指定文件进行删除(含子目录下的同名文件)
     *作者:牟勇 2006年9月3日0:58:54
     *版本号:0.0.1    */
    class FileDelete extends JFrame{
     JPanel p1;
     JTextField txtContent;
     JButton btnOK;
     JButton btnBrowse;
     JFileChooser fc;
     JLabel lblInformation;
     int deletefilecount=0;//被删文件计数器

     public FileDelete(){
      p1=new JPanel();
      p1.setBackground(Color.ORANGE);
      txtContent=new JTextField(“请输入路径或单击浏览按钮选择路径...“,30);
      btnOK=new JButton(“删除“);
      btnOK.setEnabled(false);//为避免出错,默认删除按钮不可用
      btnBrowse=new JButton(“浏览...“);
      lblInformation=new JLabel(“说明:本软件仅完成删除从指定路径开始的指定文件(包含其子路径中的指定文件)“);
      lblInformation.setForeground(Color.blue);
      lblInformation.setAutoscrolls(true);

      p1.add(txtContent);
      p1.add(btnBrowse);
      p1.add(btnOK);
      p1.add(lblInformation);
      //对文本框的鼠标监听
      txtContent.addMouseListener(new MouseListener(){
       public void mouseReleased(MouseEvent e){}
       public void mousePressed(MouseEvent e){}

       //当鼠标移出时,如果文本框为空,则让删除按钮不可用
       public void mouseExited(MouseEvent e){
        if(txtContent.getText().equals(““)){
         btnOK.setEnabled(false);
        }else{
         btnOK.setEnabled(true);
        }
       }
       public void mouseEntered(MouseEvent e){}
       //单击鼠标的时候,如果文本框里为提示的文字,则清空文本框
       public void mouseClicked(MouseEvent e){
        if(txtContent.getText().equals(“请输入路径或单击浏览按钮选择路径...“)){
         txtContent.setText(““);
        }
       }
      });

      //对文本框的按键监听
      txtContent.addKeyListener(new KeyListener(){
        public void keyTyped(KeyEvent e){
        }

        public void keyReleased(KeyEvent e){
        }

        public void keyPressed(KeyEvent e){
         if(txtContent.getText().equals(““)){
          btnOK.setEnabled(false);
         }else{
          btnOK.setEnabled(true);
         }
        }
       }
      );

      //对浏览按钮的监听
      btnBrowse.addActionListener(new ActionListener(){

       public void actionPerformed(ActionEvent e){
        String filename=““;
        fc=new JFileChooser();
        int iva=fc.showOpenDialog(FileDelete.this);
        //如果用户选择了一个文件,则将文件的绝对路径取出,并将删除按钮设为可用
        if(iva==JFileChooser.APPROVE_OPTION){
         filename=fc.getSelectedFile().getAbsolutePath();
         btnOK.setEnabled(true);
        }

        txtContent.setText(filename);
       }
      });

      //对删除按钮的监听
      btnOK.addActionListener(new ActionListener(){
       
       DeleteThread t;
       public void actionPerformed(ActionEvent e){
        //构造File类,以获得相关的路径层次
        File file=new File(txtContent.getText());
        //System.out.println(file.getParent());
        File[] files=(new File(file.getParent())).listFiles();

        String filename=file.getName();

        deletefilecount=0;//初始化被删文件计数器
        t=new DeleteThread(files,filename);
        t.start();
       }

       class DeleteThread extends Thread{

        File files[];
        String filename;
        public DeleteThread(File files[],String filename){
         this.files=files;
         this.filename=filename;
        }

        public void run(){
         try{
          for(int i=0;i〈files.length;i++){
           this.sleep(100);
           if((files[i].isFile() || files[i].isHidden()) && files[i].getName().equals(filename)){
            //System.out.println(files[i].getAbsolutePath());
            deletefilecount++;
            lblInformation.setText(“共检测到“+deletefilecount+“个“);
            if(files[i].delete()){
             lblInformation.setText(lblInformation.getText()+“  删除成功“);
            }else{
             lblInformation.setText(lblInformation.getText()+“  删除失败“);
            }
           }else if(files[i].isDirectory()){
            File file=new File(files[i].getAbsolutePath());
            t=new DeleteThread(file.listFiles(),filename);
            t.start();
            //System.out.println(“\n“);

           }
          }
         }catch(Exception e){
         }
        }
       }
      });
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.getContentPane().add(p1);
      this.setTitle(“删除指定文件“);
      this.setResizable(false);
      this.setSize(500,100);

      this.setLocation(300,200);
      this.setVisible(true);
     }

     public static void main(String[] args){
      new FileDelete();
     }
    }

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822