시소당
System 클래스는 현재 작업 환경에 대한 속성에 대해 키(key)/값(value) 쌍으로 유지하고 있는 속성 테이블을 가지고 있습니다.
자바 런타임 시스템이 처음 시작할 때, 현재 사용자 정보, 현재 사용하고 있는 자바 런타임 버전, 그리고 파일이름의 경로를 구분하기 위한 경로 구분자,
여러 가지 환경변수 등과 같은 런타임 환경에 대한 정보를 포함하기 위해 시스템 속성이 초기화됩니다.
다음은 자바 런타임 시스템이 처음 시작할 때 초기화 하는 시스템 속성 리스트입니다.
∴ “java.version”: 자바 버전 번호
∴ “java.vendor”: 자바 벤더 관련 문자열
∴ “java.vendor.url”: 자바 벤더의 URL
∴ “java.home”: 자바 설치 디렉토리
∴ “java.class.version”: 자바 클래스 버전 번호
∴ “java.class.path”: 자바 CLASSPATH
∴ “os.name”: 운영체제 이름
∴ “os.arch”: 운영체제 구조
∴ “os.version”: 운영체제 버전 번호
∴ “file.separator”: 파일 구분자 (“/” 또는 “\”)
∴ “path.separater”: PATH 설정시 경로 구분자 (“:” 또는 “;”)
∴ “line.separator”: 라인 구분자 (CR+LF, CR, or LF)
∴ “user.name”: 사용자 계정 이름
∴ “user.home”: 사용자의 홈 디렉토리
∴ “user.dir”: 사용자의 현재 사용 디렉토리
위에 나열된 시스템 속성을 자바 프로그램에서 읽거나 쓰기 위해 System 클래스에서 제공해 주는 몇 가지 메소드들을 사용할 수 있습니다.
이 때, 찾고자 하는 속성의 이름을 사용하여 해당 값을 얻어올 수 있고, 또는 모든 속성을 한꺼번에 다 얻을 수도 있습니다.
또한, 시스템 속성을 완전히 바꿀 수도 있습니다.
시스템 속성을 읽거나 쓰기 위해 사용할 수 있도록 System 클래스에서 제공해 주는 메소드는 다음과 같습니다.
∴ public static Properties getProperties(): 현재 시스템 속성을 모두 얻는다.
∴ public static String getProperty(String key): 주어진 키에 대한 시스템 속성을 얻는다.
∴ public static String getProperty(String key, String def): 주어진 키에 대한 시스템 속성을 얻고, 시스템 속성이 없으면 주어진 디폴트 값을 리턴한다.
∴ public static void setProperties(Properties props): 주어진 Properties 매개변수로 시스템 속성을 설정한다.
다음과 같이 시스템 속성을 얻을 수 있습니다.
System.getProperty(“path.separator”);
System.getProperty(“java.hello”, “Hello, Wolrd!”);
System.getProperties();
다음과 같이 시스템 속성을 설정할 수 있습니다.
Properties p = new Properties(System.getProperties());
System.setProperties(p);
다음은 시스템 속성을 읽고 쓰는 예를 보여주고 있는 자바 프로그램입니다.
class SystemPropertyTest {
public static void main(String args[]) {
System.out.println(System.getProperty("user.home"));
System.out.println(System.getProperty("user.dir"));
System.out.println(System.getProperty("java.hello", "Hello, Wolrd!"));
System.out.println(System.getProperty("java.hello"));
System.setProperty("java.hello", "Hello, Java!");
System.out.println(System.getProperty("java.hello"));
}
}
/*
* Results:
D:\AIIT\JAVA\05>java SystemPropertyTest
C:\WINDOWS
D:\AIIT\JAVA\05
Hello, Wolrd!
null
Hello, Java!
D:\AIIT\JAVA\05>
*/
<프로그램 12. SystemPropertyTest.java>
실제로 자바에서는 사용자가 정의한 시스템 속성을 설정할 수 있습니다.
이 때, 사용자는 시스템 속성을 정의하고 있는 파일을 사용하게 되는데, 다음은 시스템 속성을 정의하고 있는 텍스트 파일입니다.
myproperty.message=Hello, Java!
myproperty.version=July Version, 1999
myproperty.maker=Yongwoo's Park
myproperty.copyright=Yongwoo's Park
<프로그램 13. SystemPropertyTest.java>
다음은 위와 같은 시스템 속성 파일을 읽어들여, 시스템 속성을 설정하기 위한 자바 프로그램입니다.
import java.io.FileInputStream;
import java.util.Properties;
class SystemPropertyTest2 {
public static void main(String args[]) {
try {
FileInputStream propertyFile;
propertyFile = new FileInputStream("myProperties.txt");
Properties p = new Properties(System.getProperties());
p.load(propertyFile);
System.setProperties(p);
System.getProperties().list(System.out);
} catch(java.io.FileNotFoundException e) {
System.err.println("java.io.FileNotFoundException");
} catch(java.io.IOException e) {
System.err.println("java.io.IOException");
}
}
}
/* Results:
*
* 다음에 나오는 실행결과는 실행결과를 이름 순으로 소트한 것임
*
D:\AIIT\JAVA\05>java SystemPropertyTest2
-- listing properties --
awt.toolkit=sun.awt.windows.WToolkit
file.encoding.pkg=sun.io
file.encoding=Cp1252
file.separator=\
java.awt.fonts=
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.awt.printerjob=sun.awt.windows.WPrinterJob
java.class.path=.;C:\JAVA\JSDK2.0\LIB\JSDK.JAR;C:\JAV...
java.class.version=46.0
java.compiler=symcjit
java.ext.dirs=C:\JAVA\JDK1.2\JRE\lib\ext
java.home=C:\JAVA\JDK1.2\JRE
java.io.tmpdir=C:\WINDOWS\TEMP\
java.library.path=C:\JAVA\JDK1.2\BIN;.;C:\WINDOWS\SYSTE...
java.specification.name=Java Platform API Specification
java.specification.vendor=Sun Microsystems Inc.
java.specification.version=1.2
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
java.vendor.url=http://java.sun.com/
java.vendor=Sun Microsystems Inc.
java.version=1.2
java.vm.info=build JDK-1.2-V, native threads, symcjit
java.vm.name=Classic VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Sun Microsystems Inc.
java.vm.version=1.2
line.separator=
myproperty.copyright=Yongwoo's Park
myproperty.maker=Yongwoo's Park
myproperty.message=Hello, Java!
myproperty.version=July Version, 1999
os.arch=x86
os.name=Windows 95
os.version=4.10
path.separator=;
sun.boot.class.path=C:\JAVA\JDK1.2\JRE\lib\rt.jar;C:\JAVA...
sun.boot.library.path=C:\JAVA\JDK1.2\JRE\bin
sun.io.unicode.encoding=UnicodeLittle
user.dir=D:\AIIT\JAVA\05
user.home=C:\WINDOWS
user.language=en
user.name=geust
user.region=US
user.timezone=Asia/Tokyo
D:\AIIT\JAVA\05>
*/
<프로그램 14. SystemPropertyTest.java>