一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(源码)
2006-09-05 11:53
1536 查看
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();
}
}
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();
}
}
相关文章推荐
- 采用多线程和生产者消费者模式来实现对于一个目录以及所有子目录下的文件内容的搜索,打印出包含指定关键字的行.
- 写的一个读取指定目录下的所有文件和子目录的程序
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- 编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt。
- 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- java程序 一次改变指定目录下所有文件编码(包括子目录中的文件)
- Java版本的删除指定目录及子目录下名叫“xxx.txt”的所有文件
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
- 习题13:编写程序,使用File类实现删除当前目录下的所有文件。
- 编写一个程序,将 d:\java目录下的所有.java 文件复制到d:\jad目录下,并将原来文件的扩展名从.java 改为.jad。
- 查找指定目录下所有文件(包括子目录)——使用递归
- 删除一个目录及其子目录下的所有.svn文件
- 获取指定目录(包含子目录)下所有的txt文件的个数,并打印文件名称。程序2。
- 使用线程加载指定目录下的所有子目录和文件名称到TreeView中
- 获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)
- java程序的递归算法,列出某个目录下的所有子目录和文件
- 利用IO的知识,实现一个程序列出某个目录下的所有的”.java”文件。
- java程序的递归算法,列出某个目录下的所有子目录和文件
- java程序的递归算法,列出某个目录下的所有子目录和文件