728x90
반응형
✔ 1년간 보관 - 1년 후 삭제
- 기간 설정
private long getOneYearInMills() {
final int millisecondsInSecond = 1000;
final int secondsInMinute = 60;
final int minutesHour = 60;
final int hoursInDay = 24;
final int daysInYear = 365;
return millisecondsInSecond * secondsInMinute * minutesHour * hoursInDay * daysInYear;
}
getFiveMinutesInMills 메소드 생성, 1년을 밀리초로 변환하여 반환하는 메서드이다.
- 저장/삭제 예약
private void saveAndScheduleDeletion(String filename, String type) {
saveToAPI(filename, type);
System.out.println("Scheduling deletion for file : " + filename);
String storagePath = determineStoragePath(type);
scheduleFileDeletion(filename,storagePath, getFiveMinutesInMills());
}
API에 저장된 후, 일정 시간이 경과한 후에 자동으로 삭제될 수 있도록 처리한다.
- 파일, API 삭제 예약 실 메서드
// 주어진 파일 이름과 저장 경로, 지연 시간을 이용하여 파일 삭제 작업 예약
private void scheduleFileDeletion(String filename, String storagePath, long delayInMillis) {
TimerTask task = new TimerTask() {
public void run() {
// 로컬 파일 삭제
String filePath = UPLOAD_DIRECTORY + storagePath + "/" + filename;
File file = new File(filePath);
// 파일이 존재하는지 확인
if (file.exists()) {
// 로컬 파일 삭제 시도
if (file.delete()) {
System.out.println("Local File Delete Success: " + storagePath);
} else {
System.out.println("Local File Delete Failed: " + storagePath);
}
} else {
System.out.println("Local File already deleted: " + storagePath);
}
// API 파일 삭제
File apiFile = new File(filename);
// 파일이 존재하는지 확인
if (apiFile.exists()) {
// API 파일 삭제 시도
if (apiFile.delete()) {
System.out.println("API File Delete Success: " + filename);
} else {
System.out.println("API File Delete Failed: " + filename);
}
} else {
System.out.println("API File already deleted: " + filename);
}
}
};
Timer timer = new Timer();
timer.schedule(task, delayInMillis); // 주어진 시간 후에 작업 실행
}
위의 코드는 주어진 파일 이름과 저장 경로, 그리고 지연 시간을 이용하여 파일 삭제 작업을 예약하는 메서드이다. 예약된 작업이 실행되면 해당 파일을 로컬 및 API에서 삭제한다.
- 삭제 후 콘솔 창 모습
test를 위해 1년이 아닌 1분으로 설정하고 테스트를 실시하였으며 콘솔창에 잘 찍혔으며 자동으로 로컬에 저장된 내용들도 삭제도었다.
반응형
'업무 기록 > API' 카테고리의 다른 글
POSTMAN JSON Import/Export API TEST (0) | 2023.08.17 |
---|---|
API 원격 서버 이미지 업로드(IP동시, Jsch, sftp) (0) | 2023.07.12 |
Spring 이미지 업로드 (파일생성, 난수, 경로 설정) (0) | 2023.06.17 |
Spring 이미지 업로드 API 설계 (0) | 2023.05.26 |
SpringBoot 메세지 발송/조회 API 설계 2 (Entity, DB, Controller, Service, POSTMAN) (0) | 2023.05.19 |