Spring 스케쥴러를 이용한 파일 삭제 (수정한 날짜 기준 데이터 삭제)
import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import com.xcurenet.prs.attach.service.StreamingFileUtil; @Service public class VideoFilesDelete { private static final Logger log = LoggerFactory.getLogger(VideoFilesDelete.class); private static final int DELETE_SEC = 7200; @Scheduled(cron = "0 0 * * * ?") //1시간마다 public void userJob() throws Exception { deleteFolders(DELETE_SEC); } public static void main(String[] args) { deleteFolders(DELETE_SEC); } private static void deleteFolders(int sec) { File video = new File(StreamingFileUtil.VIDEO_TMP); if (!video.isDirectory()) return; for (File adminDirs : video.listFiles()) { File files[] = adminDirs.listFiles(); if (files == null) continue; for (File f : files) { try { long fModify = getSecondsFromModification(f); if (fModify > sec) { log.info("temp file delete : " + f.getAbsolutePath() + " modify time(s) : " + fModify); f.delete(); } } catch (IOException e) { e.printStackTrace(); } } } } // 파일의 수정한 날짜를 현재 시간 대비 경과 시간을 초로 환산 하여 리턴 private static long getSecondsFromModification(File f) throws IOException { Path attribPath = f.toPath(); BasicFileAttributes basicAttribs = Files.readAttributes(attribPath, BasicFileAttributes.class); return (System.currentTimeMillis() - basicAttribs.lastModifiedTime().to(TimeUnit.MILLISECONDS)) / 1000; } } |
1. 스케쥴 등록
- @Scheduled(cron = "0 0 * * * ?") //1시간마다
2. 디렉토리 내 파일의 수정한 날짜 경과 시간 검사
- long fModify = getSecondsFromModification(f);
if (fModify > sec) ...
3. 정해진 시간보다 파일의 수정한 날짜가 오래 되었다면 삭제 처리
- f.delete();
* 궁금한 사항은 댓글을 달아 주시기 바랍니다.
'JAVA' 카테고리의 다른 글
메이븐(MAVEN) RPM 플러그인으로 RPM 생성하기 (0) | 2018.09.07 |
---|---|
Linux에서 자바 어플리케이션 서버 실행 쉘(Shell) 스크립트 (0) | 2018.08.07 |
HTML5 VIDEO 스트리밍(STREAMING) 서버 프로그래밍 - JAVA (0) | 2018.03.07 |
Open API 연동 Controller 로직 공유 합니다. (0) | 2017.10.23 |
Open API 개발 가이드 - java (0) | 2017.10.23 |