JAVA/포스팅

자바 컬렉션 프레임워크 Properties

짜집퍼박사(짜박) 2023. 11. 19. 00:07

Properties 클래스는 Java 컬렉션 프레임워크의 일부로, 특히 키와 값이 문자열로 구성된 속성(property)을 관리하기 위한 클래스입니다. 주로 설정 파일이나 속성 파일에서 데이터를 읽고 쓸 때 사용됩니다.

 

1. Properties 클래스의 주요 특징

- Hashtable을 상속받음: Properties는 Hashtable을 확장한 클래스로, 키와 값의 쌍을 저장하기 위해 해시 테이블을 사용합니다.
- 문자열 키와 값: Properties는 키와 값이 모두 문자열로 제한됩니다. 따라서 주로 설정 정보를 문자열 형태로 다룰 때 활용됩니다.

 

주로 설정 파일에서 사용: 일반적으로 시스템의 설정 정보를 저장하고 읽어올 때 사용됩니다. 확장자가 .properties인 파일에 저장되며, load 및 store 메서드를 통해 파일과의 입출력을 지원합니다.

 

2. Properties 클래스의 주요 메서드

- setProperty(String key, String value): 지정된 키와 값으로 속성을 설정합니다.
- getProperty(String key): 지정된 키에 대한 값을 반환합니다.
- getProperty(String key, String defaultValue): 지정된 키에 대한 값을 반환하며, 키가 없을 경우 기본값을 반환합니다.
- load(InputStream inStream): 입력 스트림에서 속성을 로드합니다.
- store(OutputStream out, String comments): 출력 스트림에 속성을 저장합니다.
- stringPropertyNames(): 속성의 키 집합을 문자열 형태로 반환합니다.

 

Properties 클래스 예제

아래는 Properties 클래스의 간단한 예제입니다.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class PropertiesExample {
    public static void main(String[] args) {
        // Properties 객체 생성
        Properties properties = new Properties();

        // 속성 설정
        properties.setProperty("username", "john_doe");
        properties.setProperty("password", "secretpassword");
        properties.setProperty("server", "example.com");

        // 속성 출력
        System.out.println("Username: " + properties.getProperty("username"));
        System.out.println("Password: " + properties.getProperty("password"));
        System.out.println("Server: " + properties.getProperty("server"));

        // 파일로 저장
        try (FileOutputStream output = new FileOutputStream("config.properties")) {
            properties.store(output, "Sample Properties");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 파일에서 로드
        Properties loadedProperties = new Properties();
        try (FileInputStream input = new FileInputStream("config.properties")) {
            loadedProperties.load(input);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 로드된 속성 출력
        System.out.println("\nLoaded Properties:");
        loadedProperties.forEach((key, value) -> System.out.println(key + ": " + value));
    }
}

이 예제에서는 Properties를 생성하고 몇 가지 속성을 설정한 다음, 파일에 저장하고 다시 파일에서 읽어옵니다. 주의할 점은 파일의 경로를 지정할 때 상대 경로나 절대 경로를 사용할 수 있습니다.

 

With ChatGPT