From 35ab8407d8d275c647c2eeba6b03730350231364 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 21 Nov 2019 23:27:47 +0800 Subject: [PATCH] Fix file list bug --- .../app/service/impl/BackupServiceImpl.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java index f137051b6..dd633eb4b 100644 --- a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java @@ -39,6 +39,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * Backup service implementation. @@ -179,18 +180,20 @@ public class BackupServiceImpl implements BackupService { public List listHaloBackups() { try { // Build backup dto - return Files.list(Paths.get(haloProperties.getBackupDir())) - .filter(backupPath -> StringUtils.startsWithIgnoreCase(backupPath.getFileName().toString(), HaloConst.HALO_BACKUP_PREFIX)) - .map(this::buildBackupDto) - .sorted((leftBackup, rightBackup) -> { - // Sort the result - if (leftBackup.getUpdateTime() < rightBackup.getUpdateTime()) { - return 1; - } else if (leftBackup.getUpdateTime() > rightBackup.getUpdateTime()) { - return -1; - } - return 0; - }).collect(Collectors.toList()); + try (Stream subPathStream = Files.list(Paths.get(haloProperties.getBackupDir()))) { + return subPathStream + .filter(backupPath -> StringUtils.startsWithIgnoreCase(backupPath.getFileName().toString(), HaloConst.HALO_BACKUP_PREFIX)) + .map(this::buildBackupDto) + .sorted((leftBackup, rightBackup) -> { + // Sort the result + if (leftBackup.getUpdateTime() < rightBackup.getUpdateTime()) { + return 1; + } else if (leftBackup.getUpdateTime() > rightBackup.getUpdateTime()) { + return -1; + } + return 0; + }).collect(Collectors.toList()); + } } catch (IOException e) { throw new ServiceException("Failed to fetch backups", e); }