本地文件超时删除

简介: 文件超时删除功能工具

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

}

目录
相关文章
|
2月前
|
数据采集 数据可视化 物联网
数据工程师必看:10大主流数据清洗工具全方位功能对比
面对杂乱数据,高效清洗是分析关键。本文盘点10款主流工具:从企业级Informatica、Talend,到业务友好的Alteryx、Tableau Prep,技术向的Python、Nifi,再到轻量级Excel+Power Query,覆盖各类场景。帮你选对工具,提升效率,告别无效加班。
数据工程师必看:10大主流数据清洗工具全方位功能对比
|
10月前
|
弹性计算 运维 自然语言处理
Copilot测评报告------终端智能化
作为一名后端开发工程师,我日常需要进行云资源的运维和管理。2025年初,我尝试了阿里云推出的OS Copilot,这款基于大模型的操作系统智能助手支持Alinux、CentOS、Ubuntu等系统,具备自然语言问答、辅助命令执行、系统运维调优等功能。安装过程简单流畅,通过简单的配置即可使用。Copilot不仅能处理复杂指令,还能解释管道命令,极大提升了Linux系统的使用效率。尤其在agent模式下,智能化程度更高,显著减轻了工程师的工作负担。总的来说,Copilot的表现令人惊艳,终端操作从此更加智能便捷。
|
9月前
|
人工智能 Java 程序员
一文彻底搞明白二极管
本文介绍了二极管的基本原理、特性、分类及应用场景,帮助读者深入了解这一重要电子元件。
1774 0
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
646 1
|
存储
Build was configured to prefer settings repositories over project repositories but repository
Build was configured to prefer settings repositories over project repositories but repository
673 5
|
存储 SQL Cloud Native
揭秘数据库技术的核心与未来:从架构到应用
一、引言 数据库技术是当代信息系统中不可或缺的一部分,它为企业和个人提供了可靠、高效的数据管理解决方案
|
Ubuntu Shell Linux
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
2342 1
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
|
前端开发 JavaScript
html原理
html原理
385 2
|
Docker 容器
如何修改docker容器的端口映射
如何修改docker容器的端口映射