科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(源码)

一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(源码)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文是关于一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(源码)的有关内容.

作者:默然 来源:CSDN 2008年3月17日

关键字: 删除 多线程 java

  • 评论
  • 分享微博
  • 分享邮件

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();
 }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章