자바(Java)/JAVA 2SE

java.util.Properties - 프로퍼티

본클라쓰 2009. 9. 10. 12:03

 

 자바의 설정 파일 형식은 .properties 파일이다. properties 파일은 키와 값이라는 형태의 데이터 파일로 ISO 8859-1 문자 인코딩 을 사용하고 있다. 따라서 한글을 지원하기 위해서는 properties 파일의 문자 인코딩을 변경해야 한다. 변경 방법은 생략한다. 이 properties 파일을 객체화 시킨 것이 Properties 클래스이다. Properties 클래스는 java.util.HashTable 클래스를 상속받아 구현한 클래스로 Properties 클래스는 properties 파일을 읽고 쓸 수 있는 클래스이다.

 

 properties 클래스 객체를 생성할 때는 스트림을 인자로 주어 생성을 한다. 이 때 스트림을 생성하기 위해 File의 위치를 지정해 주어야 하는데 File의 위치를 지정하는 방법은 직접 클래스에 파일의 위치를 지정하는 방법과, 클래스 패스를 통해 지정하는 방법 ClassLoader를 사용하는 방법이 있다.

 

 

Properties 클래스 메소드)

String getProperty(String key) : 지정된 키를 가지는 프로퍼티를 반환

void list(PrintStream out) : 지정된 출력 스트림에 프로퍼티 리스트를 출력

void load(InputStream inStream) : 입력 바이트 스트림로부터 키와 요소가 대가 된 프로퍼티 리스트를 읽음
void load(Reader reader) : 프로퍼티 리스트를 입력 문자 스트림로부터 단순한 행 지향 형식으로 읽음
Enumeration propertyNames() : 모든 키 리스트를 돌려준다.

void setProperty(String key, String value) : properties 파일의 키와 값을 설정

void store(OutputStream out, String comment) : properties 파일을 저장


 properties 파일의 읽고 쓰는 방법은 다음과 같다. 
 

1. 읽기 

String path = request.getRealPath("//WEB-INF//config//jdbc.properties");

 

Properties prop = new Properties();
FileInputStream fis = new FileInputStream(path);
prop.load(fis);
Enumeration<?> enu = prop.propertyNames();
  
while ( enu.hasMoreElements() ) {
    String key = (String)enu.nextElement();
    System.out.println( key + " | " + prop.getProperty(key) );
}

 

fis.close(); 

 파일명은 경로와 확장자를 포함해야 한다. 보통 프로퍼티 파일은 확장자를 .properties 를 사용한다.

 

2. 쓰기

Properties p = new Properties();

FileOutputStream fos = new FileOutputStream(path);
prop.setProperty("jdbc.username", "test");
prop.store(fos, "");


fo.close();

 

 store() 메소드의 두 번째 인자는 주석이다. 코멘트로 작성할 내용을 인자로 전달하면 porperties 파일에 젤 상단에 코멘트가 달린다. 기본 코멘트는 properties 파일의 수정날짜를 포함한다. comment에는 null 값도 허용한다.