Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Properties(속성) 파일을 읽는 방법 완벽 정리

Java에서 Properties 클래스는 Hashtable 클래스의 하위 클래스로, 지속적인(persistent) 속성 집합을 나타냅니다. Properties 객체는 스트림에 저장하거나 스트림으로부터 불러올 수 있으며, 속성 목록의 각 키(key)와 그에 대응하는 값(value)은 모두 문자열(String) 형태입니다.

Properties 파일은 Java 애플리케이션에서 설정 정보를 외부화(externalize)하고 키-값(key-value) 쌍 형태로 저장하는 데 널리 사용됩니다. 특히 데이터베이스 접속 정보, API 키 등 민감한 설정값을 소스 코드와 분리하여 관리할 때 유용합니다.

Properties 클래스 문법

public class Properties extends Hashtable

credentials.properties 파일 예시

아래와 같이 키-값 쌍으로 구성된 속성 파일을 준비합니다.

username=admin
password=admin@123

Properties 파일 읽기 예제 코드

Properties.load() 메서드를 사용하면 .properties 파일을 키-값 쌍 형태로 간편하게 로드할 수 있습니다. 아래 예제는 파일을 읽어 username과 password 값을 출력하는 전체 과정을 보여줍니다.

import java.io.*;
import java.util.*;

public class ReadPropertiesFileTest {
    public static void main(String args[]) throws IOException {
        Properties prop = readPropertiesFile("credentials.properties");
        System.out.println("username: " + prop.getProperty("username"));
        System.out.println("password: " + prop.getProperty("password"));
    }

    public static Properties readPropertiesFile(String fileName) throws IOException {
        FileInputStream fis = null;
        Properties prop = null;
        try {
            fis = new FileInputStream(fileName);
            prop = new Properties();
            prop.load(fis);
        } catch(FileNotFoundException fnfe) {
            fnfe.printStackTrace();
        } catch(IOException ioe) {
            ioe.printStackTrace();
        } finally {
            fis.close();
        }
        return prop;
    }
}

실행 결과

username: admin
password: admin@123

코드 설명 및 참고 사항

위 코드의 핵심 흐름은 다음과 같습니다.

1. FileInputStream 생성: 대상 .properties 파일을 바이트 스트림으로 엽니다.

2. load() 호출: Properties 객체의 load() 메서드가 스트림 내용을 파싱하여 키-값 쌍을 메모리에 저장합니다.

3. getProperty()로 값 조회: 저장된 키를 기준으로 값을 가져올 수 있습니다.

4. finally 블록에서 자원 해제: 예외 발생 여부와 관계없이 스트림을 닫아 리소스 누수를 방지합니다.

참고로 Java 7 이상에서는 try-with-resources 구문을 사용하면 close() 호출 없이도 자동으로 자원이 해제되므로 더욱 안전한 코드 작성이 가능합니다.