android 根據檔案時間刪除檔案
阿新 • • 發佈:2019-01-11
//移除檔案,獲取檔案時間與當前時間對比,我這時間定位5天,刪除五天前的檔案 public static void removeFileByTime(String dirPath) { //獲取目錄下所有檔案 List<File> allFile = getDirAllFile(new File(dirPath)); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //獲取當前時間 Date end = new Date(System.currentTimeMillis()); try { end = dateFormat.parse(dateFormat.format(new Date(System.currentTimeMillis()))); } catch (Exception e){ Log.d(TAG, "dataformat exeption e " + e.toString()); } Log.d(TAG, "getNeedRemoveFile dirPath = " +dirPath); for (File file : allFile) {//ComDef try { //檔案時間減去當前時間 Date start = dateFormat.parse(dateFormat.format(new Date(file.lastModified()))); long diff = end.getTime() - start.getTime();//這樣得到的差值是微秒級別 long days = diff / (1000 * 60 * 60 * 24); if(ComDef.LOGMAXKEEPTIME <= days){ deleteFile(file); } } catch (Exception e){ Log.d(TAG, "dataformat exeption e " + e.toString()); } } } //刪除資料夾及資料夾下所有檔案 public static void deleteFile(File file) { if (file.isDirectory()) { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { File f = files[i]; deleteFile(f); } file.delete(); } else if (file.exists()) { file.delete(); } } //獲取指定目錄下一級檔案 public static List<File> getDirAllFile(File file) { List<File> fileList = new ArrayList<>(); File[] fileArray = file.listFiles(); if(fileArray == null) return fileList; for (File f : fileArray) { fileList.add(f); } fileSortByTime(fileList); return fileList; } //對檔案進行時間排序 public static void fileSortByTime(List<File> fileList) { Collections.sort(fileList, new Comparator<File>() { public int compare(File p1, File p2) { if (p1.lastModified() < p2.lastModified()) { return -1; } return 1; } }); }