java目录文件超过指定大小则删除过时文件
阅读(1102)
2018-03-08
java中某文件夹超过指定大小,则删除过时或最近没用的临时文件,对空间缓存优化有一定的帮助。案例的思路可用于java中删除过时文件、优化缓存空间、删除文件夹过期的文件、在客户端请求图片缓存图片空间清理等。
目录中文件的排序
要想删除过期的文件,在文件夹中哪些文件过期了,那就是要对该文件夹的所有文件进行最近修改时间排序。
FileLastModifiedSort.java
package com.weizhixi.util; import java.io.File; import java.util.Comparator; /** * 文件使用时间排序,根据文件的最后修改时间进行排序 * 按最后修改时间由小到大顺序排序 */ public class FileLastModifiedSort implements Comparator<File> { @Override public int compare(File f1, File f2) { if (f1.lastModified() > f2.lastModified()) { return 1; } else if (f1.lastModified() == f2.lastModified()) { return 0; } else { return -1; } } }
超过大小则删除过时文件
对目录的遍历,对符合规定条件的过期文件,进行部分删除。
FileUtil.java
package com.weizhixi.util; import java.io.File; import java.util.Arrays; public class FileUtil { /** * 优化缓存空间 * 计算文件的总大小,判断是否超过20MB。 * 如果超过20MB,则删除40%最近没有被使用的文件 * @param dirPath 文件路径 */ public static void removeSpaceCache(String dirPath) { File dir = new File(dirPath); File[] files = dir.listFiles(); if (files != null) { //计算文件的总大小,判断是否超过20MB if (filesSize(files) > 20 * 1024 * 1024) { //删除40%最近没有被使用的文件 int removeFactor = (int)Math.ceil(0.4 * files.length); //对文件按最近修改时间排序 Arrays.sort(files, new FileLastModifiedSort()); for (int i = 0; i < removeFactor; i++) { File tmp = files[i]; if (tmp.isFile()) { files[i].delete(); } } } } } /** * 计算文件的总大小 * @param files * @return */ public static int filesSize(File[] files) { int dirSize = 0; for (int i = 0; i < files.length; i++) { File tmp = files[i]; if (tmp.isFile()) { dirSize += tmp.length(); } } return dirSize; } //测试 public static void main(String[] arg0){ removeSpaceCache("C:/Users/XQ/Desktop/11"); } }
原创文章,转载请注明出处:https://www.weizhixi.com/article/80.html