ResourceBundle을 사용하여 구성 파일을 읽는 방법
우리는 모든 대상에서 Resource Bundle로 프로필을 읽고 자신의 값을 설정할 수도 있고, 나중에 사용할 수 있도록 고정된 대상을 읽어서 저장할 수도 있다.모든class에서 프로필을 읽으면 코드가 흐트러지기 때문에 하나의class로만 읽는 것이 비교적 합리적인 방법이다.또한 입출력 속도가 느리기 때문에 프로필을 읽는 class가 이 프로필을 사용할 때마다 파일을 읽으면 성능상의 병목이 되기 쉽다.이러한 상황을 피하기 위해 초기화할 때 설정 항목을 한 번에 모두 읽고 정적 구성원 변수에 저장할 수 있습니다.그러나 설정 항목에 대한 동적 읽기 수요는 배제할 수 없습니다. (일부 응용 프로그램은 멈출 수 없기 때문입니다. 예를 들어 응용 서버입니다. 이 응용 프로그램들이 실행되는 동안 설정 파일을 업데이트했기 때문에 설정을 닫지 않고 다시 읽어야 합니다.)다음 예는 정적 읽기 상황만 고려합니다. 동적 읽기라면 읽기 프로필의 코드를 어떤 방법에 넣고 이벤트에 대한 응답을 통해 이 방법을 호출하여 프로필을 업데이트할 수 있습니다.
프로필을 읽는 데 사용되는class는TestResourceBundle라고 가정합니다. 프로필의 값은property 라고 합니다.en.properties 파일 (이 파일은Test Resource Bundle에 대응하는 CLASSPATH 디렉터리에 두어야 합니다.) 두 가지 값을 설정해야 합니다:name과value.먼저 다음과 같은 문자열 상수를 class에 정의해야 합니다.
public static final String PROPERTIES_FILE_NAME = "property";
public static final String MY_NAME_KEY = "name";
public static final String MY_VALUE_KEY = "value";
여기서 PROPERTIESFILE_NAME은 파일의 이름을 나타냅니다.실제로 읽은 파일은propertyen.properties, 단 Resource Bundle 파일 이름이 "이라는 것만 알려주십시오.property"충분해.밑줄과 뒤의 "en"현지화된 정보를 나타낸다.여기 엔 대표 & quot;ENGLISH",접미사properties가 기본값입니다.MY_NAME_KEY와 MYVALUE_KEY는 설정 항목의 이름을 표시합니다. Resource Bundle의 getstring 방법으로 이 이름에 따라 값을 읽습니다.
그리고 설정해야 할 변수를 정의합니다.이러한 변수는 정적이어야 합니다.
private static String myName;
private static String myValue;
정적 초기화:
static {
try {
ResourceBundle bundle = ResourceBundle
.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);
myName = bundle.getString(MY_NAME_KEY).trim();
myValue = bundle.getString(MY_VALUE_KEY).trim();
}
catch(Exception ex) {
System.err.println( "[Property]:Can't Load property.properties");
myName = "default name";
myValue = "default value";
System.out.println( "myName will use the default value: " + myName);
System.out.println( "myValue will use the default value: " + myValue);
}
}
ResourceBundle bundle = ResourceBundle .getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);
이 코드는 ResourceBundle, Locale을 초기화합니다.ENGLISH는 현지화 상태를 나타내는 데 사용되기 때문에 "property_en.properties"구문을 사용합니다.Locale인 경우CHINA는 property에서zh.properties에서 읽습니다.이런 메커니즘은 프로그램의 현지화를 간단하게 한다.
myName = bundle.getString(MY_NAME_KEY).trim();
이 코드는 설정 파일의 이름을 "로 읽습니다.name"의 변수 값을 정적 변수 myName에 지정합니다.
이 코드는 읽기 실패할 때 설정 항목에서 절약 값을 사용합니다.
이렇게 하면, 이 클래스는 ResourceBundle에서 메모리에 있는 프로필을 읽어서 데이터를 설정합니다.
property_en.properties 파일의 내용은 다음과 같습니다
# properties sample
#
name=sega
value=100
여기서'#'로 시작하는 동작 설명은 ResourceBundle에서 이러한 행을 만났을 때 무시됩니다.
다음은 전체 테스트 코드입니다.
public class TestResourceBundle {
public static final String PROPERTIES_FILE_NAME = "property";
public static final String MY_NAME_KEY = "name";
public static final String MY_VALUE_KEY = "value";
private static String myName;
private static String myValue;
static {
try {
ResourceBundle bundle = ResourceBundle
.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);
myName = bundle.getString(MY_NAME_KEY).trim();
myValue = bundle.getString(MY_VALUE_KEY).trim();
}
catch(Exception ex) {
System.err.println( "[Property]:Can't Load property.properties");
myName = "default name";
myValue = "default value";
System.out.println( "myName will use the default value: " + myName);
System.out.println( "myValue will use the default value: " + myValue);
}
}
public void print() {
System.out.println("My name is: " + myName);
System.out.println("My value is: " + myValue);
}
public static void main(String[] args) {
TestResourceBundle test = new TestResourceBundle();
test.print();
}
}
ResourceBundle에 대한 자세한 내용은 다음 링크를 참조하십시오.
http://ja va.sun.com/docs/books/tutorial/i18n/resbundle/index.html (English)
http://www.leftworld.net/online/j2sedoc/ja varef/ja va.util.resourcebundle_dsc.htm(중국어)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IBM Portal에서 자동 JSP 재부팅 활성화포털 서버를 다시 시작하지 않고 주제와 외관 JSP에 대한 변경 사항을 보려면 응용 프로그램 서버에서 JSP의 새 버전을 자동으로 검사하도록 강제할 수 있습니다.이것은 개발과 테스트 목적에 이상적이지만 성능 문제로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.