단위 테스트(unit testing)나 특정 애플리케이션 로직을 처리할 때처럼, 프로그램 실행 중에 임시 파일을 생성해야 하는 경우가 종종 있습니다. Java에서는 java.io.File 클래스가 제공하는 메서드만으로 임시 파일을 손쉽게 만들고 삭제할 수 있습니다.
임시 파일 생성하기
Java의 File 클래스는 임시 파일을 생성하는 createTempFile() 메서드를 제공합니다. 이 메서드는 세 개의 매개변수를 받습니다.
- prefix: 임시 파일의 접두사(파일 이름 시작 부분)
- suffix: 임시 파일의 접미사(확장자)
- directory: 파일을 생성할 디렉터리를 나타내는 File 객체(추상 경로)
이 메서드가 호출되면 지정한 접두사와 접미사 사이에 고유한 숫자가 자동으로 삽입되어, 같은 이름의 파일이 충돌하지 않도록 보장해 줍니다.
예제
다음 Java 예제는 D:/SampleDirectory 경로에 exampleTempFile5387153267019244721.txt 형태의 임시 파일을 생성합니다.
import java.io.File;
import java.io.IOException;
public class TempararyFiles {
public static void main(String args[]) throws IOException {
String prefix = "exampleTempFile";
String suffix = ".txt";
// 디렉터리를 위한 File 객체 생성
File directoryPath = new File("D:/SampleDirectory");
// 임시 파일 생성
File.createTempFile(prefix, suffix, directoryPath);
System.out.println("Temp file created.........");
}
}실행 결과
Temp file created.........
임시 파일 삭제하기
File 클래스는 현재 파일 또는 디렉터리를 삭제하는 delete() 메서드를 제공합니다. 임시 파일 객체에 대해 이 메서드를 호출하면 해당 파일이 시스템에서 제거됩니다.
예제
다음 Java 프로그램은 임시 파일을 생성한 뒤 바로 삭제하는 과정을 보여줍니다.
import java.io.File;
import java.io.IOException;
public class TempararyFiles {
public static void main(String args[]) throws IOException {
String prefix = "exampleTempFile";
String suffix = ".txt";
// 디렉터리를 위한 File 객체 생성
File directoryPath = new File("D:/SampleDirectory");
// 임시 파일 생성
File tempFile = File.createTempFile(prefix, suffix, directoryPath);
System.out.println("Temp file created: " + tempFile.getAbsolutePath());
// 파일 삭제
tempFile.delete();
System.out.println("Temp file deleted.........");
}
}실행 결과
Temp file created: D:\SampleDirectory\exampleTempFile7179732984227266899.txt Temp file deleted.........
참고: JVM 종료 시 자동 삭제
프로그램이 비정상적으로 종료되어 delete() 메서드가 호출되지 않는 상황에 대비하려면, deleteOnExit() 메서드를 함께 사용하는 것이 좋습니다. 이 메서드를 호출해 두면 JVM이 정상 종료될 때 해당 임시 파일이 자동으로 삭제됩니다.
tempFile.deleteOnExit(); // JVM 종료 시 자동 삭제
이처럼 Java의 File 클래스를 활용하면 임시 파일의 생성과 삭제를 간단하고 안전하게 처리할 수 있으며, 테스트 코드나 캐시 데이터 관리에 유용하게 사용할 수 있습니다.