자바에서 File 객체는 디스크에 실제로 존재하는 파일이나 디렉터리를 추상화하여 표현하는 클래스입니다. File 객체 자체는 파일의 내용을 읽고 쓰는 기능보다는, 파일의 이름·경로·크기·권한 같은 메타데이터에 접근하고 관리하는 데 주로 사용됩니다.
java.io 패키지에 포함된 File 클래스는 다양한 방식으로 인스턴스를 생성할 수 있도록 여러 생성자를 제공합니다.
File 객체를 만드는 4가지 생성자
| 번호 | 생성자 및 설명 |
|---|---|
| 1 | File(File parent, String child) 부모가 되는 추상 경로명(File 객체)과 자식 경로명 문자열을 조합하여 새로운 File 인스턴스를 생성합니다. |
| 2 | File(String pathname) 주어진 경로명 문자열을 추상 경로명으로 변환하여 새로운 File 인스턴스를 생성합니다. 가장 널리 사용되는 기본 형태입니다. |
| 3 | File(String parent, String child) 부모 경로명 문자열과 자식 경로명 문자열을 결합하여 새로운 File 인스턴스를 생성합니다. |
| 4 | File(URI uri) 주어진 file: URI를 추상 경로명으로 변환하여 새로운 File 인스턴스를 생성합니다. |
File 객체 활용 예제
아래 예제는 명령줄 인수로 전달된 경로에 해당하는 파일 정보를 조회하는 코드입니다. 프로그램 실행 시 첫 번째 인수가 파일 경로로 간주되며, 해당 위치에 파일이 존재한다면 아래 코드가 정상적으로 동작합니다.
import java.io.File;
public class Demo{
public static void main(String[] args){
String file_name = args[0];
File my_file = new File(file_name);
System.out.println("파일 이름 : " + my_file.getName());
System.out.println("파일 경로 : " + my_file.getPath());
System.out.println("절대 경로 : " + my_file.getAbsolutePath());
System.out.println("부모 디렉터리 : " + my_file.getParent());
if(my_file.exists()){
System.out.println("파일 읽기 가능 여부 : " + my_file.canRead());
System.out.println("파일 크기(바이트) : " + my_file.length());
}
}
}
실행 결과
지정한 파일에 대한 이름, 경로, 절대 경로, 부모 디렉터리 등의 상세 정보가 화면에 출력됩니다.
코드 설명
위 예제의 동작 흐름은 다음과 같습니다.
Demo 클래스에는 main 함수가 정의되어 있으며, 명령줄에서 전달된 첫 번째 인수(args[0])를 문자열 변수 file_name에 저장합니다. 이 문자열을 이용해 File 객체 my_file을 생성한 뒤, 파일의 이름(getName()), 경로(getPath()), 절대 경로(getAbsolutePath()), 부모 디렉터리(getParent())를 순서대로 화면에 출력합니다.
이후 exists() 메서드로 해당 파일이 실제로 존재하는지 확인하고, 파일이 존재할 경우에만 읽기 가능 여부(canRead())와 파일 크기(length(), 바이트 단위)를 추가로 출력합니다. 이처럼 File 클래스를 활용하면 파일 시스템의 파일과 디렉터리 정보를 손쉽게 조회하고 관리할 수 있습니다.