本地文件超时删除

package com.dahe.mylibrary.utils;

import android.util.Log;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import static com.dahe.mylibrary.utils.CrashHandler.TAG;

public class FileUtil {

//移除文件,获取文件时间与当前时间对比,我这时间定位5天,删除五天前的文件
public static void removeFileByTime(String dirPath) {
    //获取目录下所有文件
    List<File> allFile = getDirAllFile(new File(dirPath));
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //获取当前时间
    Date end = new Date(System.currentTimeMillis());
    try {
        end = dateFormat.parse(dateFormat.format(new Date(System.currentTimeMillis())));
    } catch (Exception e){
        Log.d(TAG, "dataformat exeption e " + e.toString());
    }
    Log.d(TAG, "getNeedRemoveFile  dirPath = "  +dirPath);
    for (File file : allFile) {//ComDef
        try {
            //文件时间减去当前时间
            Date start = dateFormat.parse(dateFormat.format(new Date(file.lastModified())));
            long diff = end.getTime() - start.getTime();//这样得到的差值是微秒级别
            long days = diff / (1000 * 60 * 60 * 24);

// if(ComDef.LOGMAXKEEPTIME <= days){

            if(5 <= days){
                deleteFile(file);
            }

        } catch (Exception e){
            Log.d(TAG, "dataformat exeption e " + e.toString());
        }
    }
}

//删除文件夹及文件夹下所有文件
public static void deleteFile(File file) {
    if (file.isDirectory()) {
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            File f = files[i];
            deleteFile(f);
        }
        file.delete();
    } else if (file.exists()) {
        file.delete();
    }
}

//获取指定目录下一级文件
public static List<File> getDirAllFile(File file) {
    List<File> fileList = new ArrayList<>();
    File[] fileArray = file.listFiles();
    if(fileArray == null)
        return fileList;
    for (File f : fileArray) {
        fileList.add(f);
    }
    fileSortByTime(fileList);
    return fileList;
}


//对文件进行时间排序
public static void fileSortByTime(List<File> fileList) {
    Collections.sort(fileList, new Comparator<File>() {
        public int compare(File p1, File p2) {
            if (p1.lastModified() < p2.lastModified()) {
                return -1;
            }
            return 1;
        }
    });
}

}

上一篇:Crash统一捕获捕获并信息本地化保存


下一篇:呼叫中心如何运用语音分析解决质量监控难题