Java删除过期文件

 1   public static void main(String[] args) throws IOException {
 2         long cut = LocalDateTime.now().minusWeeks(1).toEpochSecond(ZoneOffset.UTC);
 3         Path path = Paths.get("D:\\test\\");
 4         Files.list(path).filter(n -> getLastModifiedTimeUnchecked(n).to(TimeUnit.SECONDS) < cut)
 5                 .forEach(n -> {
 6                     System.out.println(n);
 7                     delete(n, (t, u) -> System.err.format("Couldn't delete %s%n", t, u.getMessage())
 8                     );
 9                 });
10     }
11 
12 
13         public static FileTime getLastModifiedTimeUnchecked(Path path, LinkOption... options) throws UncheckedIOException {
14             try {
15                 return Files.getLastModifiedTime(path, options);
16             } catch (IOException ex) {
17                 throw new UncheckedIOException(ex);
18             }
19         }
20 
21         public static void delete(Path path, BiConsumer<Path, Exception> e) {
22             try {
23                 System.out.println(path);
24                 Files.delete(path);
25             } catch (IOException ex) {
26                 e.accept(path, ex);
27             }
28         }
29 
30 
31         public void deleteOldFile(){
32             long cut = LocalDateTime.now().minusDays(3L).toEpochSecond(ZoneOffset.UTC);
33             Path path = Paths.get("/path/to/delete");
34             try {
35                 Files.list(path)
36                         .filter(n -> {
37                             try {
38                                 return Files.getLastModifiedTime(n).to(TimeUnit.SECONDS) < cut;
39                             } catch (IOException ex) {
40                                 //handle exception
41                                 return false;
42                             }
43                         })
44                         .forEach(n -> {
45                             try {
46                                 Files.delete(n);
47                             } catch (IOException ex) {
48                                 //handle exception
49                             }
50                         });
51             } catch (IOException e) {
52                 e.printStackTrace();
53             }
54         }

 

posted @ 2019-05-08 20:08  在旅途上追忆寻梦  阅读(771)  评论(0编辑  收藏  举报