Java定时清理过期文件的实例代码

项目中经常需要自动定时去清理一些过期文件,这个其实Java实现挺简单的,核心部分就2个,一个定时任务,一个递归删除文件,不过前提是你的文件放在以“2018-12-05”这样命名的文件夹下,下面直接上核心代码:

1. 递归删除文件

/**
   * 递归删除文件夹下所有文件
   * @param file
   */
  public static void deleteFile(File file) {
    if (file.isDirectory()) {
      //递归删除文件夹下所有文件
      File[] files = file.listFiles();
      for (File f : files) {
        deleteFile(f);
      }
      //删除文件夹自己
      if (file.listFiles().length == 0) {
        logger.info("删除文件夹:[{}]", file);
        file.delete();
      }
    } else {
      // 如果是文件,就直接删除自己
      logger.info("删除文件:[{}]", file);
      file.delete();
    }
  }

 2. 定时任务

@Component
public class FileJob {
  private static final Logger logger = LoggerFactory.getLogger(FileJob.class);
  @Scheduled(cron = "0/1 * * * * *")
  public void clean() throws ParseException {
    logger.info("开始删除文件...");
    long startTime = System.currentTimeMillis();
    //删除文件
    File deleteFile = new File("xxx");
    File[] deleteFiles = deleteFile.listFiles();
    for (File file : deleteFiles) {
      Date createDate = new SimpleDateFormat("yyyy-MM-dd").parse(file.getName());
      //删除15天前的文件
      if (new Date().compareTo(DateUtil.getDateIn(DateUtil.DAY, 15, createDate)) > 0) {
        FileUtil.deleteFile(uploadFile);
      }
    }
    logger.info("删除文件结束,总耗时:[{}]毫秒", System.currentTimeMillis() - startTime);
  }
}

总结

以上所述是小编给大家介绍的Java定时清理过期文件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )

    语言之争由来已久,下面做一些IO实验(遍历9G多的文件,批量删除),尽量用事实来比较谁优谁劣.操作系统:win7 64 位,文件包大小:9.68G. 一.语言:C# 开发环境:vs 2013 代码总行数:43行 耗时:7秒 代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; n

  • Java定时清理过期文件的实例代码

    项目中经常需要自动定时去清理一些过期文件,这个其实Java实现挺简单的,核心部分就2个,一个定时任务,一个递归删除文件,不过前提是你的文件放在以"2018-12-05"这样命名的文件夹下,下面直接上核心代码: 1. 递归删除文件 /** * 递归删除文件夹下所有文件 * @param file */ public static void deleteFile(File file) { if (file.isDirectory()) { //递归删除文件夹下所有文件 File[] fil

  • Java定时调用.ktr文件的示例代码(解决方案)

    1.Maven依赖 <!-- Kettle --> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-core</artifactId> <version>7.1.0.0-12</version> </dependency> <dependency> <groupId>pentaho-kettl

  • java合并多个文件的实例代码

    在实际项目中,在处理较大的文件时,常常将文件拆分为多个子文件进行处理,最后再合并这些子文件.下面就为各位介绍下Java中合并多个文件的方法. Java中合并子文件最容易想到的就是利用BufferedStream进行读写. 具体的实现方式如下,代码很详细,供各位参考学习. 1.首先创建mergeFiles方法,接收字符串数组和字符串参数,并完成文件合并功能 public static boolean mergeFiles(String[] fpaths, String resultPath) {

  • Java下http下载文件客户端和上传文件客户端实例代码

    一.下载客户端代码 package javadownload; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * @说明 导出虚拟机 * @author wxt * @version 1

  • Java生成压缩文件的实例代码

    在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载.所以自己写了一个压缩文件的工具类.该工具类支持单个文件和文件夹压缩.放代码: import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.

  • hadoop上传文件功能实例代码

    hdfs上的文件是手动执行命令从本地linux上传至hdfs的.在真实的运行环境中,我们不可能每次手动执行命令上传的,这样太过繁琐.那么,我们可以使用hdfs提供的Java api实现文件上传至hdfs,或者直接从ftp上传至hdfs. 然而,需要说明一点,之前笔者是要运行MR,都需要每次手动执行yarn jar,在实际的环境中也不可能每次手动执行.像我们公司是使用了索答的调度平台/任务监控平台,可以定时的以工作流执行我们的程序,包括普通java程序和MR.其实,这个调度平台就是使用了quart

  • Java压缩/解压文件的实现代码

    用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.zip.*; import javax.swing.*; //从压缩包中提取文件 public class ZipExtractDemo extends JFrame{ JFileChooser fileChooser; //文件选择器 JTextField jtfTarg

  • Java thrift服务器和客户端创建实例代码

    Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的.高效的服务. Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器.thrift允许你定义一个简单的定义文

  • HttpClient通过Post上传文件的实例代码

    在之前一段的项目中,使用Java模仿Http Post方式发送参数以及文件,单纯的传递参数或者文件可以使用URLConnection进行相应的处理. 但是项目中涉及到既要传递普通参数,也要传递多个文件(不是单纯的传递XML文件).在网上寻找之后,发现是使用HttClient来进行响应的操作,起初尝试多次依然不能传递参数和传递文件,后来发现时因为当使用HttpClient时,不能使用request.getParameter()对普通参数进行获取,而要在服务器端使用Upload来进行操作. Http

  • java创建多级目录文件的实例讲解

    实例如下所示: /** * 创建多级目录文件 * * @param path 文件路径 * @throws IOException */ private void createFile(String path) throws IOException { if (StringUtils.isNotEmpty(path)) { File file = new File(path); if (!file.getParentFile().exists()) { file.getParentFile().

随机推荐