지정한 시간이 되면 지정되어 있는 폴더안의 파일들을 지우는 스케쥴러를 구현해 보도록 하겠습니다.
package Scheduler; import java.io.File; class FileCleaner { public static void deleteFolder(String path) { File folder = new File(path); if (folder.isDirectory()) { File[] files = folder.listFiles(); for (File file : files) { if (file.isDirectory()) { FileCleaner.deleteFolder(file.getPath()); } file.delete(); } } } }
FileCleaner 클래스의 deleteFolder 메소드는 해당 폴더를 지우는 작업을 합니다. 폴더일경우 다시 자기자신을 호출하여 파일들을 지웁니다. 해당경로의 폴더를 다 지울때까지 재귀적인 메소드 호출은 계속됩니다.
package Scheduler; import java.util.TimerTask; class FileDeleteScheduler extends TimerTask { private String folderPath; public void setFolderPath(String folderPath) { this.folderPath = folderPath; } public void run() { FileCleaner.deleteFolder(folderPath); } }
FileDeleteScheduler는 해당시간이 되면 폴더안의 파일들을 삭제하는 작업을 수행합니다.
package Scheduler; import java.util.Calendar; import java.util.Date; import java.util.Timer; class Scheduler { private Timer timer; private FileDeleteScheduler fileDeleteScheduler; public Scheduler() { timer = new Timer(); fileDeleteScheduler = new FileDeleteScheduler(); } public void start() { fileDeleteScheduler.setFolderPath("C:\\Test");; Calendar cal = Calendar.getInstance(); cal.set(Calendar.AM_PM, Calendar.AM); cal.set(Calendar.HOUR, 5); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); timer.scheduleAtFixedRate(fileDeleteScheduler, cal.getTime(), 1000 * 60 * 60 * 24 * 2); } }
새벽 5시를 기점으로 작업이 진행되고 이틀간격으로 해당 위치의 폴더안의 파일들을 삭제하는 스케쥴러가 되겠습니다.
'JAVA Platform > JAVA' 카테고리의 다른 글
[JAVA] - Swing JScrollPane 스크롤 (0) | 2015.01.21 |
---|---|
[JAVA] - File 최종 수정일 알기 (0) | 2014.11.15 |
[JAVA] - 배열 복사 방법 (0) | 2014.11.02 |
[JAVA] - SQLite Connection (0) | 2014.09.21 |
[JAVA] - 파일(File) 무조건 생성하기 (0) | 2014.09.19 |