黑马程序员技术交流社区

标题: 自己写的定时删除指定文件夹下的全部内容 [打印本页]

作者: 经济    时间: 2015-6-3 11:49
标题: 自己写的定时删除指定文件夹下的全部内容
说明:本人技术有限,代码中可能存在不够合理的地方,望大家积极的给予点评,源码如下:
package com.dyn.itheima.test4;
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
public class DeleteFloder {
public static void main(String[] args) {
  // 指定删除的目录路径
  final String path = "F:\\目录";
  // 创建定时器
  Timer timer = new Timer();
  // 创建任务
  TimerTask task = new TimerTask() {
   @Override
   public void run() {
    // TODO Auto-generated method stub
    deleteFloder(new File(path));
   }
  };
  // 2秒后执行删除文件夹任务
  timer.schedule(task, 2000);
}
protected static void deleteFloder(File src) {
  // 遍历判断是文件夹、还是文件,以便进行相应的处理
  for (File file : src.listFiles()) {
   if (file.isDirectory()) {
    deleteFloder(file);
   } else {
    deleteFile(file);
   }
  }
  // 文件夹已经为空,删除文件夹
  System.out.println("删除文件夹: " + src.getName());
  src.delete();
}
private static void deleteFile(File file) {
  // TODO Auto-generated method stub
  System.out.println("删除文件: " + file.getName());
  file.delete();
}
}


作者: as604049322    时间: 2015-6-4 10:35
就是用了定时器之后,程序不会自己停止了
作者: 经济    时间: 2015-6-4 10:38
as604049322 发表于 2015-6-4 10:35
就是用了定时器之后,程序不会自己停止了

嗯,昨天我也在想这个问题,不知大神有何高招没?
作者: as604049322    时间: 2015-6-4 13:08
经济 发表于 2015-6-4 10:38
嗯,昨天我也在想这个问题,不知大神有何高招没?

可以改成这样:
  1. public static void main(String[] args) {
  2.                 // 指定删除的目录路径
  3.                 final String path = "F:\\目录";
  4.                 // 创建定时器
  5.                 Timer timer = new Timer();
  6.                
  7.                 class Task1 extends TimerTask {
  8.                         Timer t;
  9.                         public Task1(Timer t) {
  10.                                 this.t = t;
  11.                         }
  12.                         @Override
  13.                         public void run() {
  14.                                 deleteFloder(new File(path));
  15.                                 t.cancel();
  16.                         }
  17.                 }
  18.                 // 创建任务
  19.                 TimerTask task = new Task1(timer);
  20.                 // 2秒后执行删除文件夹任务
  21.                 timer.schedule(task, 2000);
  22.         }
复制代码

作者: 经济    时间: 2015-6-4 13:26
as604049322 发表于 2015-6-4 13:08
可以改成这样:

嗯,很好,刚才我在练习时出现了Connection reset异常,在我新发地帖子中,望大神不吝赐教




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2