@WebServlet("/PropTest")
public class PropTest extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Properties prop = new Properties();
prop.put("key1", "val1");
prop.put("key2", "val2");
prop.put("key3", "val3");
FileWriter fw = new FileWriter("b.properties");
prop.store(fw, "comments");
Properties prop2 = new Properties();
FileReader fr = new FileReader("b.properties");
prop2.load(fr);
Iterator iter = prop2.keySet().iterator();
PrintWriter pw = response.getWriter();
while(iter.hasNext()) {
String key = (String) iter.next();
pw.append(key + " : " + prop2.getProperty(key) + "\n");
}
}
}
Properties
맵 이름.put(키, 값); // 추가
맵 이름.get(키); // 검색
맵 이름.keySet(); // 키 묶음
맵 이름.values(); // 값 묶음
- map의 한 형태. map과 같은 문법을 쓴다.
- 프로그램의 설정, 정보 등 기타 데이터를 저장한다.
Properties 클래스는 파일 입출력을 지원한다.
다만, 파일을 직접 여는 클래스가 아니므로 FileReader 또는 FileInputStream 객체를 매개변수로 받아온다.
마찬가지로 파일을 생성하는 것도 못하므로 FileOutputStream 또는 FileWriter로 파일 생성!
[주요 메서드]
void
|
load (FileInputStream file)
|
- 스트림으로 열린 Properties 파일 객체를 로드함
|
load (FileReader file)
|
||
String
|
getProperty(String key)
|
- key값을 제공하면 해당하는 Value를 문자열로 반환함
|
object
|
setProperty(String key, value)
|
- Properties 객체에 키와 값(value) 저장
|
void
|
store(스트림객체, 주석)
|
- 객체에 저장된 내용을 파일에 씀 (OutputStream, Writer 계열만 가능)
|
*Map과 차이점
Map은 모든 형태의 객체 데이터를 key와 value값으로 사용할 수 있지만
Properties는 key와 value값으로 String만 사용할 수 있다.
Map은 put(), get() 메서드를 이용해서 데이터를 입출력하지만
Properties는 setProperty(), getProperty() 메서드를 통해서 데이터를 입출력한다.
Properties prop = new Properties();
prop.put("key1", "val1");
prop.put("key2", "val2");
prop.put("key3", "val3");
- Properties 속성의 변수를 선언한다.
- prop 변수에 .put(키, 값) 로 키와 값을 넣는다.
FileWriter fw = new FileWriter("b.properties")
prop.store(fw, "comments");
** FileWriter - 문자스트림 중 파일에서 2B씩 출력하는 출력 스트림
- 출력이란.. 넣은 값을 파일로 내보내겠다는 의미의 출력.. 일종의 내보내기..
- b.properties 파일로 값을 내보내는 출력 스트림을 생성한 것.
- store(스트림객체, 주석) : Properties 객체의 값들을 파일에 저장
- b.properties 파일 출력 스트림에 prop 내용을 저장하겠다.
Properties prop2 = new Properties();
FileReader fr = new FileReader("b.properties");
prop2.load(fr);
- prop2 선언
** FileReader - 문자스트림 중 파일에서 2B씩 읽는 입력 스트림
- load() : 파일 데이터를 읽어서 Properties 객체에 저장
- b.properties 파일에 있는 내용을 읽어서 prop2에 담겠다.
Iterator iter = prop2.keySet().iterator();
PrintWriter pw = response.getWriter();
while(iter.hasNext()) { // 다음에 읽을 요소가 있으면 true
String key = (String) iter.next(); // 다음 요소 추출
pw.append(key + " : " + prop2.getProperty(key) + "\n");
}
Iterator<요소타입> 반복자명 = 리스트명.iterator(); // 생성
while (반복자명.hasNext()) { // 다음에 읽을 요소 있으면 true, 아니면 false 반환.
요소타입 변수명 = iter.next(); // 다음 요소 추출
}
** Iterator - 반복자. 배열, 요소를 하나씩 추출하는 동작을 반복하는 것을 자동 처리해줌.
** PrinterWriter - 응답페이지(웹뷰)에 출력할 출력 스트림 생성
- prop2의 key묶음 만큼 while 루프를 돌려서 String key에 넣는다.
- 웹뷰 출력 스트림에 key와 값 (.getProperty(key)) 을 붙임.
https://intheham.tistory.com/20#1-2.%20Map-1
[JAVA] 컬렉션 (List - ArrayList, 반복자 / Map)
컬렉션 ==> 배열의 부족한 점 보완. : 자바 자료구조를 미리 구현해서 제공하는 API 1-1. List - 값만 저장, 순서 있음. (Vector, ArrayList, LinkedList...) 1-1-1. ArrayList : 배열 대응 - 생성, 타입, 크기 제약 없다
intheham.tistory.com