TempFileConfiguration.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.shkpr.service.alambizplugin.configuration;
  2. import com.global.base.log.LogLevelFlag;
  3. import com.global.base.log.LogPrintMgr;
  4. import com.shkpr.service.alambizplugin.commproperties.TempFileProperties;
  5. import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
  6. import org.apache.commons.io.FileUtils;
  7. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.scheduling.annotation.Scheduled;
  10. import java.io.IOException;
  11. import java.io.UncheckedIOException;
  12. import java.nio.file.Files;
  13. import java.nio.file.Path;
  14. import java.time.Duration;
  15. import java.time.Instant;
  16. import java.util.stream.Stream;
  17. /**
  18. * 临时文件配置
  19. *
  20. * @author 欧阳劲驰
  21. * @since 1.0.0
  22. */
  23. @Configuration
  24. @EnableConfigurationProperties({TempFileProperties.class})
  25. public class TempFileConfiguration {
  26. /**
  27. * log
  28. */
  29. private final String mStrClassName;
  30. private final String mBizType;
  31. private final TempFileProperties tempFileProperties;
  32. public TempFileConfiguration(TempFileProperties tempFileProperties) {
  33. mStrClassName = "TempFileConfiguration";
  34. mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
  35. this.tempFileProperties = tempFileProperties;
  36. }
  37. @Scheduled(fixedRateString = "${temp-file.check-cycle}")
  38. public void scheduled() {
  39. //读取子文件
  40. try (Stream<Path> list = Files.list(tempFileProperties.getResourcePath())) {
  41. //遍历子文件
  42. list.forEach(path -> {
  43. try {
  44. //获取文件存在时间
  45. Instant fileInstant = Files.getLastModifiedTime(path).toInstant();
  46. Duration fileDuration = Duration.between(fileInstant, Instant.now());
  47. //比较生命周期,如大于生命周期,则删除
  48. Duration lifecycle = tempFileProperties.getLifecycle();
  49. if (fileDuration.compareTo(lifecycle) > 0)
  50. if (Files.isDirectory(path)) {
  51. //删除文件夹
  52. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
  53. , String.format(
  54. "清理临时文件夹;路径:%s 存在时间:%s 生命周期:%s"
  55. , path
  56. , fileDuration
  57. , lifecycle
  58. )
  59. );
  60. FileUtils.deleteDirectory(path.toFile());
  61. } else if (Files.isRegularFile(path)) {
  62. //删除文件
  63. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
  64. , String.format(
  65. "清理临时文件;路径:%s 存在时间:%s 生命周期:%s"
  66. , path
  67. , fileDuration
  68. , lifecycle
  69. )
  70. );
  71. FileUtils.delete(path.toFile());
  72. }
  73. } catch (IOException e) {
  74. throw new UncheckedIOException(e);
  75. }
  76. });
  77. } catch (IOException | UncheckedIOException e) {
  78. //打印报错信息
  79. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  80. , String.format("清理临时文件失败 error:%s", e)
  81. );
  82. }
  83. }
  84. }