java递归删除空文件夹_java中文件操作(递归删除空文件夹,删除过期文件)

(1)保留规定的前几个月的记录如下:

/**

* 清理目录中过期的文件

*

* @param dayCount

* :保存时间天数

* @param dirPath

* :目录路径

* @return

*/

@SuppressWarnings("unchecked")

private static boolean deleteFiles(String dirPath, String backupPath, int days, boolean isBackup) {// 计算备份日期,备份该日期之前的文件Date pointDate = new Date();long timeInterval = pointDate.getTime() - convertDaysToMilliseconds(days);pointDate.setTime(timeInterval);// 是否进行备份if (isBackup) {if (!backUpFiles(dirPath, backupPath, pointDate)) {

System.out.println("Backup failed:"+ dirPath);

return false;}}// 设置文件过滤条件IOFileFilter timeFileFilter = FileFilterUtils.ageFileFilter(pointDate, true);IOFileFilter fileFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, timeFileFilter);// 删除符合条件的文件File deleteRootFolder = new File(dirPath);Iterator itFile = FileUtils.iterateFiles(deleteRootFolder, fileFiles, TrueFileFilter.INSTANCE);while (itFile.hasNext()) {File file = (File) itFile.next();boolean result = file.delete();if (!result) {

LogEx.error("Failed to delete file of :"+ file);

return false;}}// 清理空的文件夹File[] forderList = deleteRootFolder.listFiles();if (forderList != null && forderList.length > 0) {for (int i = 0; i < forderList.length; i++) {

deleteEmptyDir(forderList[i]);}}return true;

}/**

* 备份删除文件到指定的目录 ,目录格式:yyyy_MM_dd_bak

*

* @param srcDir

* :源文件路径

* @param destDir

* :目标文件路径

* @param dayCount

* :时间间隔,备份该时间之前的数据

* @return

*/

private static boolean backUpFiles(String srcDir, String destDir, Date pointDate) {try {// 设置备份文件夹格式YYYY_MM_dd_bakSimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd");String folderName = format.format(new Date()) +"_bak";

File resFile = new File(srcDir);File distFile = new File(destDir + File.separator + folderName);

// 文件过滤条件IOFileFilter timeFileFilter = FileFilterUtils.ageFileFilter(pointDate, true);IOFileFilter fileFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, timeFileFilter);

// 复制文件目录FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, fileFiles);FileUtils.copyDirectory(resFile, distFile, filter, true);} catch (IOException e) {e.printStackTrace();LogEx.error("Failed to backupFile:"+ e.getMessage());return false;}return true;

}/**

* 天与毫秒的转换

*

* @param days

* @return

*/

private static long convertDaysToMilliseconds(int days) {return days * 24L * 3600 * 1000;

}

2、清理所有的文件夹

/**

* 循环删除空的文件夹

*

* @param dir

*/

private static void deleteEmptyDir(File dir) {if (dir.isDirectory()) {File[] fs = dir.listFiles();if (fs != null && fs.length > 0) {

for (int i = 0; i < fs.length; i++) {

File tmpFile = fs[i];

if (tmpFile.isDirectory()) {deleteEmptyDir(tmpFile);

}

if (tmpFile.isDirectory() && tmpFile.listFiles().length <= 0) {tmpFile.delete();

}

}}if (dir.isDirectory() && dir.listFiles().length == 0) {

dir.delete();}}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值