Properties는 HashMap의 구버전인 Hashtable을 상속받아 구현한 것으로 Hashtable은 키(key)와 값(value)을 (Object, Object)의 형태로 저장하는데 비해 Properties는 (String, String) 의 형태로 저장하는 보다 단순화된 컬렉션 클래스이다.
주로 애플리케이션의 환경설정과 관련된 속성(property)을 저장 하는데 사용되며 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공한다.
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에 담아 반환한다.
저장하고 읽어오고 출력하는 방법에 대한 예제
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