`
withyou
  • 浏览: 455361 次
社区版块
存档分类
最新评论

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

阅读更多
一个使用多线程删除指定目录及子目录下所有指定文件的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();
 }

分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    Java 源码:计算某个目录下的所有文件(夹)的大小,神器

    本篇文章将深入讲解如何实现这个功能,并基于提供的"Java源码:计算某个目录下的所有文件(夹)的大小"这一主题,详细阐述相关知识点。 首先,计算目录大小的基本思路是递归遍历目录结构,逐个累加文件的大小。在Java...

    java线程下载网络文件源码

    根据提供的文件信息,我们可以梳理出一个使用Java进行网络文件多线程下载的实现方案。下面将详细介绍相关的知识点。 ### Java线程下载网络文件原理 在Java中,通过多线程技术可以有效地提高文件下载的速度。具体来...

    java源码包2

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java源码包3

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java经典的源程序

    6. **多线程**:Java内置了多线程支持,源码中可能包含Thread类的使用,以及同步和互斥的概念。 7. **泛型**:Java的泛型提高了代码的类型安全性和重用性,源码中可能会看到泛型类和泛型方法的使用。 8. **设计...

    基于java的文件分割器源码

    - 文件分割模块:这里可能包含一个方法,接受大文件路径、子文件大小限制和输出目录作为参数,然后实现文件的分割。 - 文件合并模块:此部分可能有一个方法,接收子文件的目录、原始文件名(用于生成合并后的新...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    java源码包4

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java文件压缩源码

    Java文件压缩源码是Java开发中常见的需求,它允许开发者将多个文件或目录打包成一个压缩文件,方便存储和传输。在本例中,我们提到的实现方式是通过使用Apache Ant库中的`org.apache.tools.ant.taskdefs.Zip`类。...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    java源码:Java用Zip压缩多个文件实例源码.rar

    当需要压缩整个目录及其子目录时,我们可以使用递归函数来遍历目录中的所有文件和子目录,并对每个文件执行上述步骤。 6. **优化与性能** 在实际应用中,可能会考虑优化代码以提高性能,例如使用缓冲区读写文件...

    java编写一个文件查找器

    使用`File.listFiles()`方法可以获取一个目录下的所有文件和子目录。如果目录为空或者不存在,该方法会返回null,因此需要进行异常处理。 2. **文件过滤**:为了找到特定的文件,我们可以定义一个`FilenameFilter`...

    文件批处理模块_java_批处理_源码

    - **并发处理**:为了提高效率,可以使用多线程或Java 8的并行流来并发处理多个文件。`ExecutorService`和`Future`接口可以帮助管理和协调这些任务。 6. **异常处理**: 文件操作中常见的异常有`...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    Java目录监视器源程序

    Java目录监视器是一个基于Java编程语言实现的小型实用工具,其主要功能是实时监控指定的文件目录,并在每次扫描间隔(如5秒)后报告目录内文件大小的变化以及文件数量的增减。这个应用程序对于开发者来说非常有用,...

    java目录监视器源程序

    Java目录监视器源程序是一个用Java编程语言编写的实用工具,它允许用户监控指定的文件系统目录,并在该目录中的文件或子目录发生变化时得到通知。这个程序对于开发者来说非常有价值,尤其是那些需要实时跟踪文件变化...

    搜索所有文件源码

    "搜索所有文件源码"这个标题所指的,可能是一个程序或脚本,其功能是遍历指定文件夹及其子文件夹,查找特定类型或所有类型的文件。下面我们将深入探讨这一主题。 首先,让我们了解一下如何实现这样的功能。在编程...

    文件批量改名程序源码

    本项目提供的"文件批量改名程序源码"正是解决这一问题的工具,它允许用户一次性更改指定目录下所有文件的名称,极大地提高了工作效率。下面我们将深入探讨这个主题。 批量改名通常涉及到编程语言中的文件操作函数,...

    Java 遍历文件夹内文件

    标题"Java 遍历文件夹内文件"所指的就是使用`File`类及其相关方法来查找和访问一个目录下的所有文件和子目录。例如,你可以使用`listFiles()`方法来获取目录下的所有文件和子目录,它会返回一个`File`对象数组。但要...

Global site tag (gtag.js) - Google Analytics