자바 디렉토리 삭제하기(Delete a non-empty directory in JAVA)

자바에서 파일을 삭제하려면 File 클래스에서 delete() 메소드를 사용하면 된다.

File file = new File("pathname");
file.delete();


하지만 delete() 메소드는 해당 path 가 디렉토리일 경우 디렉토리가 비어 있을때만 삭제가 된다. 디렉토리 안에 파일이나 하위 디렉토리가 있을 때 삭제하려면 다음과 같이 recursive 메소드를 사용해서 삭제할 수 있다.

import java.io.File;


class DeleteDir {
	public static void main(String args[]) {
		deleteDirectory(new File(args[0]));
	}
	
	public static boolean deleteDirectory(File path) {
		if(!path.exists()) {
			return false;
		}
		
		File[] files = path.listFiles();
		for (File file : files) {
			if (file.isDirectory()) {
				deleteDirectory(file);
			} else {
				file.delete();
			}
		}
		
		return path.delete();
	}
}


[MySQL]JOIN을 이용한 여러 테이블 DELETE

서로 연관이 있는 테이블의 row를 삭제하는 경우가 있는데, 아래의 예제 코드를 사용하면 단지 하나의 쿼리만으로 수행이 가능하다.

DELETE u, up, upc, ut, utp
FROM users AS u
LEFT JOIN users_photos AS up ON up.user_id = u.id
LEFT JOIN users_photos_comments AS upc ON upc.photo_id = up.id
LEFT JOIN users_topics AS ut ON ut.user_id = u.id
LEFT JOIN users_topic_posts AS utp ON utp.topic_id = ut.id
WHERE u.id = 12