강좌 & 팁
글 수 2,412
2012.08.12 17:21:34 (*.52.177.29)
45227
이번 시간에는 Properties사용법에 대해 알아보도록 하겠습니다.
보통 값을 유동적으로 사용하기 위해 프로퍼티파일을 사용합니다.
파일 형식은 아주 간단합니다.
아래와 같은 형식으로 사용합니다.
key=value
예)error_msg=에러 메세지
message.properties라는 파일을 만들어 메세지 값을 취득해오는 샘플소스를 만들어 보겠습니다.
message.properties내용은 아래와 같습니다.
error_msg=에러 메세지 info_msg=안내 메세지 warning_msg=경고 메세지
message.properties파일내에 키값이 중복되면 어떻게 될까요???
마지막에 읽혀진 것이 출력됩니다.
프로퍼티 파일내에는 키값이 중복 되지 않도록 유의 하시기 바랍니다.
프로퍼티 파일은 메모장에서 작성하였고 인코딩은 ANSI로 되어 있습니다.
만약 UTF-8로 저장하였다면 파일을 읽어 들일때 UTF-8로 읽어들이도록 샘플 소스상의 MS949 -> UTF-8로 수정해서
사용 바랍니다.
[샘플소스]
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.Properties; public class PropertiesRed { private Properties proper; public PropertiesRed(String filePath) { this.proper = new Properties(); try { // 한글이 깨지는 문제 때문에 인코딩을 지정해서 읽을수 있도록 함. this.proper.load(new BufferedReader( new InputStreamReader( new FileInputStream(filePath), "MS949" ) )); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Message * @param key * @return message */ public String read(String key) { return proper.getProperty(key); } public static void main(String args[]) { PropertiesRed msgProper = new PropertiesRed("D:\\message.properties"); System.out.println(msgProper.read("error_msg")); System.out.println(msgProper.read("info_msg")); System.out.println(msgProper.read("warning_msg")); } }
소스 내용중 this.proper.load(new FileInputStream(filePath))로 해도 되지만 파일 내용에 한글이 들어갈 경우
글씨가 깨지는 현상이 생기므로 반드시 인코딩을 지정해서 로딩 하도록 합니다.
파일내용이 영문만 있을경우는 this.proper.load(new FileInputStream(filePath))으로 해도 문제 없습니다.
[실행결과]
에러 메세지
안내 메세지
경고 메세지
감사합니다.