天天看點

本地檔案逾時删除

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;
        }
    });
}           

}

繼續閱讀