Java實現(xiàn)文件夾中內(nèi)容定時刪除
今天我和大家分享一下用Java實現(xiàn)對一個文件夾中內(nèi)容定時刪除。
讓我們來看一下對一個文件夾中內(nèi)容定時刪除的功能。
對于文件的刪除就是用File類中的delete()方法刪除當前File所表示的文件或者目錄(空目錄),不過這里要注意對于目錄的刪除是要判斷該目錄是否是空目錄,不是空目錄不能刪除,還需要對該目錄進行遞歸查找該目錄里的文件并刪除,如果遞歸查找的還是目錄,那么繼續(xù)進行上面的操作。
定時功能呢?java.util包中有一個Timer類,Timer類用于創(chuàng)建定時器類,Timer類中有schedule(TimerTask task,Date firstTime,long preiod)的方法:從指定firstTime 的時間開始 ,對指定的任務(wù)執(zhí)行重復(fù)的 固定延遲preiod執(zhí)行 。
設(shè)置定時任務(wù)的功能:TimerTask是一個抽象類,因為我們對定時任務(wù)的需求不同,不能固定寫一個具體的方法,或者寫上所有的方法。TimerTask就提供了run()方法 ,但是沒有寫具體實現(xiàn),這是由使用者去寫的(誰調(diào)用誰就寫具體的實現(xiàn))。
//設(shè)置定時任務(wù) public static void clock(File file) { //設(shè)置清理時間 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 12); calendar.set(Calendar.MINUTE, 26); calendar.set(Calendar.SECOND, 0); Timer timer = new Timer(); //設(shè)置定時任務(wù) timer.schedule(new TimerTask() { @Override public void run() { clean(file); } }, calendar.getTime(), 24 * 60 * 60 * 1000); }
設(shè)置清理指定文件夾中的文件功能:
//清理文件 public static void clean(File file) { File[] files = file.listFiles(); if (Objects.nonNull(files)) { for (File f : files) { //判斷是否是文件夾,是就遞歸 if (f.isDirectory()) { clean(f); } //清理文件 f.delete(); System.out.println(f.getName() + "已清理!!!"); } } }
主函數(shù):
public static void main(String[] args) { File file = new File("D:\\mycode"); clock(file); }
總結(jié):要實現(xiàn)對一個文件夾中內(nèi)容定時刪除的功能,我們要懂得利用遞歸對文件遍歷還有就是理解TimerTask和Timer中schedule()的用法。如果我們對這理解很深了,我們還可以做一個定時監(jiān)控指定文件夾,判斷是否有新文件或新目錄產(chǎn)生。甚至我們還可以做電視中每過幾秒換一個名字的選人的功能。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java @Async注解導(dǎo)致spring啟動失敗解決方案詳解
這篇文章主要介紹了Java @Async注解導(dǎo)致spring啟動失敗解決方案詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08IntelliJ IDEA中Project與Module的概念以及區(qū)別
這篇文章主要給大家介紹了關(guān)于IntelliJ IDEA中Project與Module的概念以及區(qū)別的相關(guān)資料,文中通過實例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01一不小心就讓Java開發(fā)踩坑的fail-fast是個什么鬼?(推薦)
這篇文章主要介紹了Java fail-fast,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04詳解Java對象序列化為什么要使用SerialversionUID
這篇文章主要介紹了詳解Java對象序列化為什么要使用SerialversionUID,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11