자바(Java)/JAVA 2SE

java.util.ResourceBundle - 프로퍼티 파일 접근

본클라쓰 2009. 9. 10. 11:53

 

 자바 .properties 파일을 다루는 클래스이다. 프로퍼티(properties)파일은 설정이나 자원들에 대해 [ 키 = 값 ] 형태로 저장된 파일을 말한다. 프로퍼티 파일은 문자열을 통해 인덱스시킨 배열로 인식한다.

 

 리소스번들 클래스를 사용하면 프로퍼티 파일을 읽을 수만 있고 수정은 불가능하다. 즉, 리소스번들(ResourceBundle)클래스는 설정이나 자원을 미리 정의한 후 프로그램내에서 불러와 사용할 수 있게만 한다. 리소스번들은 로케일(locale)을 지원한다. 로케일이란 만약 다국어를 지원해야 하는 프로그램을 만들때 나라별로 표현되는 언어를 "패밀리명_ko" 또는 "패밀리명_en" 이런 방법으로 프로퍼티 파일을 작성하여 각 나라를 선택할 때  "ko"나 "en"으로 접근하는 방법을 말한다. 로케일은 자원번들이 속한 패밀리에서 특정 로케일을 식별할 때 사용한다.


 

사용방법

ResourceBundle config = ResourceBundle.getBundle("프로퍼티파일");


 프로퍼티 파일은 패키지를 포함한 파일명으로 작성한다. 만약 java.config 패키지에 config.properties 파일이 있다면 " java.config.config " 으로 작성해야 한다.

 

로케일을 포함 사용 방법(프러퍼티 파일 형식이 filename_pr.properties 처럼 된다)

Locale locale = new Locale("pr");


ResourceBundle config = ResourceBundle.getBundle("프로퍼티파일", locale);


 케일 - 파일 명 뒤에 붙는 의존 코드로 2자리수 대소문자이다. 최대 세개까지 구별할 수 있으며 기본적으로 언어, 나라, 지역 구분으로 로케일을 구분한다.

 

ex)  propertiesfile_ko_ko_se.properties

 

 

중요 메소드)

Enumeration getKeys()

프로퍼티 파일안에 있는 키값들의 목록을 반환합니다.

 

String getString(key)

매개변수로 전달한 키값에 해당하는 value를 문자열로 반환합니다.


example.properties (co.kr.test)

# location into co.kr.test package

 

a=1

b=테스트

c=test


  참고 - .properties 파일은 key=value 형태로 구성되어 있으며 주석은 '#' 을 사용하여 처리한다. 그러나 문자열 중간에 있는 '#'문자는 그대로 문자열로 인식한다.

 


ResourceBundle 예제 Execute 클래스

package co.kr.test

 

import java.util.Enumeration;

import java.util.ResourceBundle;

 

public class Execute {


    public static void main (String[] args) {


        ResourceBundle resource = ResourceBundle.getBundle("co.kr.test");

        Enumeration<String> e = resource.getKeys();

 

        try {

 

            while ( e.hasMoreElements() ) {

                String name = (String)e.nextElement();

                // 한글 인코딩 문제를 해결하기 위한 코드

                String value = new String(resource.getString(name).getBytes("ISO-8859-1"), "euc-kr");

                // 한글을 사용하지 않을 경우 코드

                String value = resource.getString(name);
                System.out.println(name + " = " + value );

            }


        } catch(Exception err) {

            err.printStackTrace();

        }

    }

}

 

 


결과

b = 테스트;

c = test;

a = 1;

 

 

 

※ 참고

 이클립스로 작업할 경우 properties 파일에 한글이 작성이 안된다면 이클립스의 propertiest 플러그인을 설치 하셔야 한다. 플러그인 설치 방법은 이클립스 항목을 찾아 보시면 나온다. 이렇게 플러그인을 설치해야 이클립스에서 한글 처리를 해준다.

 

보통은 properties 파일을 작성한 후 다음과 같은 명령어를 사용하여 한글처리를 한다.

 

sheel> native2ascii 파일명.properties new_myproperties.prop