Java :: Collection :: 1.12 Properties

김병철·2022년 9월 21일
0

Java

목록 보기
20/20

1.12 Properties

Properties는 HashMap의 구버전인 Hashtable을 상속받아 구현한 것으로 Hashtable은 키(key)와 값(value)을 (Object, Object)의 형태로 저장하는데 비해 Properties(String, String) 의 형태로 저장하는 보다 단순화된 컬렉션 클래스이다.

주로 애플리케이션의 환경설정과 관련된 속성(property)을 저장 하는데 사용되며 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공한다.


# Properties의 생성자와 메서드

  • Properties()
    -> Properties 객체를 생성한다.

  • Properties(Properties defaults)
    -> 지정된 Properties에 저장된 목록을 가진 Properties 객체를 생성한다.

  • String getProperty(String key)
    -> 지정된 키(key)의 값(value)을 반환한다.

  • String getProperty(String key, String defaultValue)
    -> 지정된 키(key)의 값(value)을 반환한다. 키를 못찾으면 defaultValue를 반환한다.

  • void list(PrintStream out)
    -> 지정된 PrintStream에 저장된 목록을 출력한다.

  • void list(PrintWriter out)
    -> 지정된 PrintWriter에 저장된 목록을 출력한다.

  • void load(InputStream inStream)
    -> 지정된 InputStream으로부터 목록을 읽어서 저장한다.

  • void load(Reader reader)
    -> 지정된 Reader으로부터 목록을 읽어서 저장한다.

  • void loadFromXML(InputStream in)
    -> 지정된 InputStream으로부터 XML문서를 읽어서, XMl 문서에 저장된 목록을 읽어다 담는다. (load & store)

  • Enumeration propertyNames()
    -> 목록의 모든 키(key)가 담긴 Enumeration을 반환한다.

  • void save(OutputStream out, String header)
    -> deprecated되었으므로 store()를 사용하자

  • Object setProperty(String key, String value)
    -> 지정된 키와 값을 저장한다. 이미 존재하는 키(key)면 새로운 값(value)으로 바뀐다.

  • void store(OutputStream out, String comments)
    -> 저장된 목록을 지정된 OutputStream에 출력(저장)한다.
    comments는 목록에 대한 설명(주석)으로 저장된다.

  • void store(Writer, String comments)
    -> 저장된 목록을 지정된 Writer에 출력(저장)한다.
    comments는 목록에 대한 설명(주석)으로 저장된다.

  • void storeToXML(OutputStream os, String comment)
    -> 저장된 목록을 지정된 출력스트림에 XMl문서로 출력(저장)한다. comment는 목록에 대한 설명(주석)으로 저장된다.

  • void storeToXML(OutputStream os, String comment, String encoding)
    -> 저장된 목록을 지정된 출력스트림에 해당 인코딩의 XML 문서로 출력(저장)한다.
    comment는 목록에 대한 설명(주석)으로 저장된다.

  • Set stringPropertyNames()
    -> Properties에 저장되어 있는 모든 키(key)를 Set에 담아 반환한다.


# Properties의 기본적인 메서드 이용 예제

저장하고 읽어오고 출력하는 방법에 대한 예제

import java.util.*;

public class Ex11_35 {
	public static void main(String args[]) {
		Properties prop = new Properties();
		
		// prop에 키,값을 저장
		prop.setProperty("timeout", "30");
		prop.setProperty("language", "kr");
		prop.setProperty("size", "10");
		prop.setProperty("capacity", "10");
		
		// prop에 저장된 요소들을 Enumeration을 이용하여 출력
		Enumeration e = prop.propertyNames();
		
		while(e.hasMoreElements()) {
			String element = (String)e.nextElement();
			System.out.println(element+"="+prop.getProperty(element));
		}
		
		System.out.println();
		prop.setProperty("size", "20");		// size의 값을 20으로 변경
		System.out.println("size : "+ prop.getProperty("size"));
		System.out.println("capacity="+ prop.getProperty("capacity", "20"));
		System.out.println("loadfactor="+ prop.getProperty("loadfactor","0.75"));
		
		System.out.println(prop);			// prop에 저장된 요소들을 출력
		prop.list(System.out);				// prop에 저장된 요소들을 화면(System.out)에 출력
	}
}
  • 출력 결과 :
capacity=10
size=10
timeout=30
language=kr

size : 20
capacity=10
loadfactor=0.75
{capacity=10, size=20, timeout=30, language=kr}
-- listing properties --
capacity=10
size=20
timeout=30
language=kr
profile
keep going on~

0개의 댓글