sitelink1 http://blog.naver.com/hyperhit?Redirect=...0011130674 
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

시스템 속성(System Property) 얻기 및 설정하기

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:AIITJAVA�5>java SystemPropertyTest
C:WINDOWS
D:AIITJAVA�5
Hello, Wolrd!
null
Hello, Java!
D:AIITJAVA�5>
*/

<프로그램 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:AIITJAVA�5>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:JAVAJSDK2.0LIBJSDK.JAR;C:JAV...
 java.class.version=46.0
 java.compiler=symcjit
 java.ext.dirs=C:JAVAJDK1.2JRElibext
 java.home=C:JAVAJDK1.2JRE
 java.io.tmpdir=C:WINDOWSTEMP
 java.library.path=C:JAVAJDK1.2BIN;.;C:WINDOWSSYSTE...
 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:JAVAJDK1.2JRElibrt.jar;C:JAVA...
 sun.boot.library.path=C:JAVAJDK1.2JREbin
 sun.io.unicode.encoding=UnicodeLittle
 user.dir=D:AIITJAVA�5
 user.home=C:WINDOWS
 user.language=en
 user.name=geust
 user.region=US
 user.timezone=Asia/Tokyo
 D:AIITJAVA�5>
 */  

<프로그램 14. SystemPropertyTest.java> 
 

 

 

번호 제목 글쓴이 날짜 조회 수
83 [Tip] 톰캣 JNDI DB POOL 설정하기 황제낙엽 2007.05.11 486
82 [javac 에러] code too large for try statement 황제낙엽 2007.02.28 544
81 JDBC 테스트 페이지 file 황제낙엽 2007.02.22 9264
80 [JDBC] URL 사용법 모음 황제낙엽 2007.02.21 1496
79 Exception Tunneling - C2 Wiki (last edited January 15, 2005) 황제낙엽 2007.02.08 1051
78 Java's checked exceptions were a mistake - Rod Waldhoff (1 April 2003) 황제낙엽 2007.02.08 605
77 Best Practices for Exception Handling by Gunjan Doshi (11/19/2003) 황제낙엽 2007.02.08 369
76 "Thinking in Java"의 저자인 Bruce Eckel의 Checked Exception에 대한 생각 황제낙엽 2007.02.06 381
75 수치형 연산 고려사항 황제낙엽 2007.01.25 472
» 시스템 속성(System Property) 얻기 및 설정하기 황제낙엽 2007.01.24 539
73 자바코딩을 위한 EditPlus설정법 황제낙엽 2003.05.16 427
72 SCJP 2002년 10월 정도의 버전 덤프들입니다. 황제낙엽 2002.12.29 541
71 Jakarta 프로젝트의 Regexp(정규식) 패키지 사용하기 황제낙엽 2007.01.22 285
70 PATTERN MATCHING (패턴 매칭) file 황제낙엽 2007.01.17 520
69 JAVA 와 XML (간단한 프로그램 예제) 황제낙엽 2006.08.31 459
68 getServerPort(), getLocalPort(), getRemotePort() 황제낙엽 2006.08.07 448
67 컨텐츠 타입에 대해서 황제낙엽 2006.08.07 509
66 서블릿의 생명주기 file 황제낙엽 2006.08.07 353
65 서블릿의 초기화 황제낙엽 2006.07.24 290
64 JSTL 황제낙엽 2006.02.17 520