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

相关文章:

你感兴趣的文章:

标签云: