按文件名、更新时间等查找本地文件夹中文件
文件过滤器,按照文件名称与更新时间过滤
/** * 文件过滤器 * @Description * 类描述: * @author gao * @Date 2017年7月19日 * @modify * 修改记录: * */ static class FileByCondition implements FileFilter { private String fileName; private String endTime; private String startTime; @Override public boolean accept(File fileDir) { String fileNameDir = fileDir.getName(); Date modifiedTime = new Date(fileDir.lastModified()); String modifiedTimeStr = DateUtils.getDateTime(modifiedTime); int startFlag = 1; if (StringUtils.isNotBlank(startTime)) { startFlag = DateUtils.compareStrDateTime(modifiedTimeStr, startTime); } int endFlag = 1; if (StringUtils.isNotBlank(endTime)) { endFlag = DateUtils.compareStrDateTime(endTime, modifiedTimeStr); } boolean fileNameFlag = true; if (StringUtils.isNotBlank(fileName)) { fileNameFlag = fileNameDir.contains(fileName); } if (fileNameFlag && startFlag > 0 && endFlag > 0) return true; else return false; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getStartTime() { return startTime; } public void setStartTime(String startTime) { this.startTime = startTime; } public String getEndTime() { return endTime; } public void setEndTime(String endTime) { this.endTime = endTime; } public FileByCondition(String fileName, String startTime, String endTime) { this.fileName = fileName; this.startTime = startTime; this.endTime = endTime; } }
将过滤后的文件按照更新时间排序
/** * 根据更新时间比较文件 * @Description * 类描述: * @author gao * @Date 2017年7月18日 * @modify * 修改记录: * */ static class CompratorByModifiedTime implements Comparator<File> { public int compare(File f1, File f2) { long diff = f1.lastModified() - f2.lastModified(); if (diff < 0) return 1; else if (diff == 0) return 0; else return -1; } public boolean equals(Object obj) { return true; } }
取得文件需要的属性信息
public static List<Map<String, String>> getFileByFilter(FileByCondition fileCondition) { String fileDirPath = "D:\\tools\\Tomcat\\Tomcat7\\apache-tomcat-7.0.57\\logs\\urs"; //获取window或linux下的日志文件目录 /*String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith("win")) { fileDirPath = System.getProperty("catalina.home") + "\\logs\\urs\\"; } else { fileDirPath = System.getProperty("catalina.home") + "/logs/urs/"; }*/ File fileDir = new File(fileDirPath); //日志目录下的所有日志文件 File[] files = fileDir.listFiles(fileCondition); //按照修改时间排序 Arrays.sort(files, new CompratorByModifiedTime()); List<Map<String, String>> resultList = new ArrayList<Map<String, String>>(); for (int i = 0; i < files.length; i++) { Map<String, String> fileInfo = new HashMap<String, String>(); File file = files[i]; //文件名 String fileName = file.getName(); //修改时间 String modifiedTime = DateUtils.getDateTime(new Date(file.lastModified())); //文件大小 long fileLength = (long) Math.ceil((file.length() / 1024f)); String fileSize = fileLength + "KB"; fileInfo.put("fileName", fileName); fileInfo.put("fileTime", modifiedTime); fileInfo.put("fileSize", fileSize); resultList.add(fileInfo); } return resultList; }
main方法测试
public static void main(String[] args) { String fileNameCondition = "urs"; String startTime = "2017-07-11 18:00:58"; String endTime = "2017-07-29 18:01:00"; FileByCondition fileCondition = new FileByCondition(fileNameCondition, startTime, endTime); List<Map<String, String>> resultList = getFileByFilter(fileCondition); System.out.println(resultList.size()); }