본문 바로가기

01. Java/02. etc

java.util.Properties

 시스템 분석을 하다 보면 properties 파일에 관련 값들이 들어가 있는 것을 종종 봤는데 이것을 어떻게 불러와서 사용되는지 따로 생각해 본 적이 없었다. 그래서 이번에 Java에서 제공하는 java.util.Properties 클래스에 대해 알아봤다.

 

참고

https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html

 

Properties (Java Platform SE 8 )

Reads a property list (key and element pairs) from the input character stream in a simple line-oriented format. Properties are processed in terms of lines. There are two kinds of line, natural lines and logical lines. A natural line is defined as a line of

docs.oracle.com

 

개념적인 내용보다는 활용법에 대해 정리하였다.

 

 

 java.util.Properties 클래스는 자바 프로그램에서 속성(property)을 관리하기 위한 유용한 도구를 제공하는 클래스다. 이 클래스는 키(key)와 값(value) 쌍으로 구성된 속성 집합을 나타내며, 주로 구성 파일이나 속성 파일과 같은 설정 정보를 다루는 데 사용된다.

사용하는 메소드는 다음과 같다.

 

getProperty(String key)

주어진 키에 대한 값을 반환.

 

 load(InputStream inStream)
입력 스트림에서 속성을 로드하여 Properties 객체에 추가. 주로 파일로부터 설정 정보를 읽어올 때 사용.


● setProperty(String key, String value)

주어진 키와 값으로 속성을 설정.

 

getProperty(String key, String defaultValue)
주어진 키에 대한 값을 반환하며, 만약 해당 키가 존재하지 않으면 기본값으로 주어진 값을 반환.

 

● store(OutputStream out, String comments)
출력 스트림에 속성을 저장. 주로 설정 정보를 파일에 저장할 때 사용.


● stringPropertyNames()

속성 집합에 포함된 모든 키를 문자열 형태로 반환.


● list(PrintStream out)

속성을 출력 스트림에 키-값 쌍의 형태로 출력합니다.

 

clear()

속성 집합을 비웁니다.

 

 보통 값이 들어있는 properties 파일에서 해당값을 불러오는 기능만 사용을 해봐서 나머지 메소드들에 대해서는 사용 해본적은 없다.

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;

/**
 * Properties 클래스 활용해보기
 */
public class MyProperties {

	public static void main(String[] args) {

		// Properties 객체 생성
		Properties myProperties = new Properties();

		// 값 세팅하기
		myProperties.setProperty("database.driver", "org.mariadb.jdbc.Driver");
		myProperties.setProperty("database.url", "jdbc:mysql://localhost:3306/mydatabase");
		myProperties.setProperty("database.username", "kdkhelloworld");
		myProperties.setProperty("database.password", "password123");

		// test.properties 파일 생성 및 쓰기
		File myFile = new File("C:\\Users\\NC627\\Desktop\\test.properties");
		FileOutputStream fos = null;

		try {
			fos = new FileOutputStream(myFile);
			myProperties.store(fos, "database config");
			fos.close();
		} catch (Exception e) {
			System.out.println("파일 생성 실패!");
		}

		// 생성한 test.properties 파일에서 값 읽어오기
		FileInputStream fis = null;

		try {
			fis = new FileInputStream(myFile);
			myProperties.load(fis);
			fis.close();
		} catch (Exception e) {
			System.out.println("파일 읽기 실패!");
		}

		String driver = myProperties.getProperty("database.driver");
		String url = myProperties.getProperty("database.url");
		String userName = myProperties.getProperty("database.username");
		String password = myProperties.getProperty("database.password");

		System.out.println(driver);
		System.out.println(url);
		System.out.println(userName);
		System.out.println(password);
	}
}

 

간단하게 (try, path 등) 예제 코드를 작성하였다. 

Console
바탕화면에 생성된 test.properties

 

 주석에도 적혀 있지만 코드의 흐름은 다음과 같다.

ㆍProperties 객체 생성 

ㆍ생성한 객체에 값 세팅 후 파일 생성

ㆍ생성한 PROPERTIES 파일(.properties) 읽어오기

ㆍ읽어온 PROPERTIES 파일에서 원하는 값 가져오기

 

사용한 메소드는 다음과 같다.

ㆍ getProerties

ㆍ setProperties

ㆍ load

ㆍ store

 

store 메소드의 경우 2번째 파라미터가 뭔지 이해가 안 됐는데 파일을 보면 저런 식으로 주석이 달린다.

'01. Java > 02. etc' 카테고리의 다른 글

[Java]Apache POI  (0) 2023.12.01
java.util.Base64  (0) 2023.11.22
java.util.UUID  (0) 2023.11.21
java.lang.System  (0) 2023.11.20