지정한 시간이 되면 지정되어 있는 폴더안의 파일들을 지우는 스케쥴러를 구현해 보도록 하겠습니다. 


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
블로그 이미지

행복그리고..

,