이번 시간에는 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))으로 해도 문제 없습니다.


[실행결과]

에러 메세지
안내 메세지
경고 메세지


감사합니다.