在规定的时间进行删除文件和文件夹

来源:互联网 发布:其是之谓乎翻译 编辑:程序博客网 时间:2024/04/29 19:47
/**
 * 
 */
package com.henghao.nfc.util;


import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
 * @author 陈文旭
 * @creationTime 2016-6-15
 * 这是定时删除文件
 */
@SuppressWarnings("unused")
public class FileDeleter extends TimerTask{
    //创建定时器
 private Timer timer= new Timer();    
       //获取当前的毫秒值
 private Calendar calendar = Calendar.getInstance();
 //开关
 private boolean flag=false;
 //这是io流
 private File file=null;
 //这是路径
 private String dir=null;
//无参数构造
 public   FileDeleter(){};
          //这是有参数构造
 public FileDeleter(String dir){
 this.dir=dir;
  }
 /** 
  *  根据路径删除指定的目录或文件,无论存在与否 
  *@param dir 要删除的目录或文件 
  *@return 删除成功返回 true,否则返回 false。 
  */  


public  boolean deleteFolder(String dir){
    flag = false; 
   file = new File(dir);  
   // 判断目录或文件是否存在  
   if (!file.exists()) {  // 不存在返回 false  
       return flag;  
   } else {  
       // 判断是否为文件  
       if (file.isFile()) {  // 为文件时调用删除文件方法  
        System.out.println("进入了deleteFile方法");
           return deleteFile(dir);  
           
       } else {  // 为目录时调用删除目录方法  
        System.out.println("进入了deleteDirectory方法");
           return deleteDirectory(dir);  
       }  
   }  
 }
//设置多少时间进行删除
public void start(){
Date time = DateUtils.getSundayOfThisWeek();
SimpleDateFormat  sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
String dd=sdf.format(time);
System.out.println(dd);
//每隔多少分钟,小时进行一次删除
timer.scheduleAtFixedRate(this, time, 1000 * 60 * 60* 12); 
System.out.println("进入了时间方法");
}
 @Override
public void run() {
 deleteFolder(dir);
//下班之前停止任务 
        if(calendar.get(Calendar.HOUR_OF_DAY) == 17 && calendar.get(Calendar.MINUTE) == 15){
           System.out.println("下班之前停止任务 ..");
        this.cancel();
        }
}


/** 
* 删除单个文件 
* @param  dir   被删除文件的文件名 
* @return 单个文件删除成功返回true,否则返回false 
*/  
public boolean deleteFile(String dir) {  
   flag = false;  
   file = new File(dir);  
   // 路径为文件且不为空则进行删除  
   if (file.isFile() && file.exists()) {  
       file.delete();  
       flag = true;  
   }  
   return flag;
   }

/** 
* 删除目录(文件夹)以及目录下的文件 
* @param  dir 被删除目录的文件路径 
* @return  目录删除成功返回true,否则返回false 
*/  
public boolean deleteDirectory(String dir) {  
   //如果sPath不以文件分隔符结尾,自动添加文件分隔符  
   if (!dir.endsWith(File.separator)) {  
    dir = dir + File.separator;  
   }  
   File dirFile = new File(dir);  
   //如果dir对应的文件不存在,或者不是一个目录,则退出  
   if (!dirFile.exists() || !dirFile.isDirectory()) {  
       return false;  
   }  
   flag = true;  
   //删除文件夹下的所有文件(包括子目录)  
   File[] files = dirFile.listFiles();  
   for (int i = 0; i < files.length; i++) {  
       //删除子文件  
       if (files[i].isFile()) {  
           flag = deleteFile(files[i].getAbsolutePath());  
           if (!flag) break;  
       } //删除子目录  
       else {  
           flag = deleteDirectory(files[i].getAbsolutePath());  
           if (!flag) break;  
       }  
   }  
   if (!flag) return false;  
   //删除当前目录  
   if (dirFile.delete()) {  
       return true;  
   } else {  
       return false;  
   }  
}  

}


调用方式:FileDeleter deleter=  new FileDeleter(String path);
             deleter.start();

0 0
原创粉丝点击