Java——删除最后修改时间大于30天的文件及文件夹,并且保存日志信息

package com.pb.demo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;

public class DemoFile {

private final static String dirPathLog = "G:/log";    //日志文件夹
private final static String dirPathDel = "G:/a";    //临时文件夹
public static void main(String[] args) {
    //把要删除的文件包装成文件
    File file = new File(dirPathDel);
    if(file.exists()) {   //文件或文件夹是否存在
        if(file.isDirectory()) {   //判断是否是目录
            info(file);
        }
    }
}

public static void info(File file) {
    //获得文件里面所有的文件及文件夹
    File[] files = file.listFiles();
    //创建您要写入的日志文件
    String file1 = dirPathLog + "/del_path" + System.currentTimeMillis() + ".txt";   //写入的是否操作
    //遍历files里面的所有文件及文件夹

    FileWriter fw = null;
    BufferedWriter bw = null;

    for(File f : files) {

        //获得绝对路径下的文件及文件夹
        File absFile = f.getAbsoluteFile();

        //计算时间
        long day = 30;
        long hour = 24;
        long minute = 60;
        long second = 60;
        long mmcond = 1000;


        long currTime = System.currentTimeMillis();   //当前时间


        long lastTime = absFile.lastModified();     //文件被最后一次修改的时间

        //时间差
        long diffen = currTime - lastTime;

        long thDay = day * hour * minute * second * mmcond;

        if(diffen <= thDay) {
            absFile.delete();
            if(absFile.isDirectory()) {
                info(absFile);
                absFile.delete();
            }
        }

        System.out.println("当前时间:" + currTime);
        System.out.println("文件最后被修改的时间" + lastTime);
        System.out.println("时间差:" + diffen);
        System.out.println("30天的时间:" + thDay);


        long delTime = lastTime + thDay;   //要删除文件及文件夹的时间--毫秒数
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");   //2017-5-5 23:32:23:234
        String formatTime = sdf.format(delTime);

        String strDel = "删除该文件的时间是:" + "\t"+formatTime+"\t" + "\t删除的文件是:" + absFile.getAbsolutePath();     //absFile.getAbsolutePath()获得你要删除文件的绝对路径   
        try {
            fw = new FileWriter(file1, true);
            bw = new BufferedWriter(fw);
            bw.write(strDel);
            bw.newLine();    //换行
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bw.close();
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }









    }            
    //删除文件并记录日志方法
    //拿到要删除文件里的所有文件及文件夹
    //创建您删除文件后的日志文件
    //创建输出流
    //删除文件并记录日志
}

}

你可能感兴趣的:(Java——删除最后修改时间大于30天的文件及文件夹,并且保存日志信息)