A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ye646682485 中级黑马   /  2015-5-5 12:46  /  672 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

:'(,从开始学到现在,编译java产生不少.class文件,甚至比java文件还多。本人看着心烦,就编写了一个可视化程序删除指定目录中删除指定文件类型的文件。打成了jar包,可以双击执行。后来,才发现dos命令行就可以删除某个目录下的文件如del *.class。:'( 。不过在编写这个程序也让我学习了不少,这个程序涉及到了io,gui,迭代知识。下面是我的程序截图:

我现在解决不了的问题就是,迭代查找文件的时候,删除一个文件,弹出一个对话框,提示删除成功。请大家指教下,怎么解决。
删除一个弹出一个。:'(

下面是我编写的代码,请大家指教下:
  1. package delete;
  2. /*
  3. 删除指定文件类型的文件
  4. 结合了IO,GUI,迭代知识
  5. 可以用dos命令删除,del *.class
  6. */
  7. import java.io.*;
  8. import java.awt.*;
  9. import java.awt.event.*;
  10. class DeleteFile
  11. {
  12.         //窗体的定义
  13.         private Frame delFrame;
  14.         private TextField dirText,fileText;
  15.         private Button delB;

  16.         //对话框的定义
  17.         private Dialog dialog;
  18.         private Label label;
  19.         DeleteFile()
  20.         {
  21.                 init();
  22.         }
  23.         private void init()//初始化窗体
  24.         {
  25.                 delFrame  = new Frame("删除多个目中指定文件类型的文件");
  26.                
  27.                 delFrame.setBounds(300,200,400,200);
  28.                 delFrame.setLayout(new FlowLayout());
  29.                
  30.                 dirText = new TextField(20);
  31.                 fileText = new TextField(20);
  32.                 delB = new Button("删除");

  33.                 dirText.setText("请输入目录");
  34.                 fileText.setText("请输入删除的文件类型");
  35.                 delFrame.add(dirText);
  36.                 delFrame.add(fileText);
  37.                 delFrame.add(delB);
  38.                 event();
  39.                 delFrame.setVisible(true);
  40.         }
  41.         private void event()//窗体中所使用的事件
  42.         {
  43.                 delFrame.addWindowListener(new WindowAdapter()
  44.                 {
  45.                         public void windowClosing(WindowEvent we)
  46.                         {
  47.                                 System.exit(0);
  48.                         }
  49.                 });
  50.                 delB.addActionListener(new ActionListener()
  51.                 {
  52.                         public void actionPerformed(ActionEvent ae)
  53.                         {
  54.                                
  55.                                 String dirPath=dirText.getText();
  56.                                 String fileType=fileText.getText();
  57.                                 File dir = new File(dirPath);
  58.                                 if(!(dir.exists()))
  59.                                 {       
  60.                                        
  61.                                         makeDialog("请输入正确的目录信息");
  62.                                 }
  63.                                 else
  64.                                 {
  65.                                         delete(dir,fileType);
  66.                                 }
  67.                         }
  68.                 });
  69.                
  70.         }
  71.         private void delete(File dir,String fileType)//迭代删除文件操作
  72.         {
  73.                 File[] files = dir.listFiles();
  74.                 for(File file:files)
  75.                 {
  76.                         if(file.isDirectory())
  77.                                 delete(file,fileType);
  78.                         else
  79.                         {
  80.                                 File f = file;
  81.                                 String name = f.getName();
  82.                                 if(name.endsWith(fileType))
  83.                                         f.delete();
  84.                         }
  85.                 }
  86.                 makeDialog("删除成功");//这里有点问题,每次迭代都要输出删除成功
  87.         }
  88.         private void makeDialog(String str)//创建对话框,文本对象
  89.         {
  90.                 dialog = new Dialog(delFrame,"提示",true);
  91.                 dialog.setBounds(400,250,160,100);
  92.                 label = new Label(str);
  93.                 dialog.add(label);
  94.                 dialog.addWindowListener(new WindowAdapter()
  95.                 {
  96.                         public void windowClosing(WindowEvent we)
  97.                         {
  98.                                 dialog.setVisible(false);
  99.                         }
  100.                 });
  101.                 dialog.setVisible(true);
  102.         }
  103.         public static void main(String[] args)//main
  104.         {
  105.                 new DeleteFile();
  106.         }
  107. }
复制代码



7 个回复

倒序浏览
makeDialog("删除成功")之前判断一下dir下是否还有指定类型的文件,没有就执行 makeDialog("删除成功")
回复 使用道具 举报 1 0
楼上正解
回复 使用道具 举报
我只是路过,打酱油……
回复 使用道具 举报
大神好牛逼 目测现在还看不懂 先mark一下 以后学习
回复 使用道具 举报
GUI好学吗?没看过
回复 使用道具 举报
cody 中级黑马 2015-5-5 21:34:25
7#
感觉看不懂。。。。。。
回复 使用道具 举报
ZSMAN 发表于 2015-5-5 18:44
makeDialog("删除成功")之前判断一下dir下是否还有指定类型的文件,没有就执行 makeDialog("删除成功") ...

哦,我试试。谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马