2013-06-17 2 views
20

속성 파일 이름은 prop.properties입니다. 내 주요 코드에서 나는 System.getProperty()properties.getProperty()을 가지고 있습니다.Java의 System.getProperty와 properties.getProperty의 차이점

내 질문은 : 둘 다 prop.properties에서 속성을 얻거나 서로 다른 장소에서 속성을 얻을 것입니다, properties.getProperty()prop.properties에서 속성을 얻고 System.getProperty() 다른 곳에서 속성을 가져.

+1

'속성'의 출처에 따라 다릅니다. 'Properties properties = System.getProperties();', 그렇다면 동일합니다. 'Properties propertes = new Properties();'이면, 그렇지 않습니다. – CodeBlind

+0

감사합니다 벤, 이제 알았습니다 –

답변

30

System.getProperty()은 JVM (JVM 자체 또는 명령 줄에서 전달한 -D 옵션)으로 정의 된대로 속성을 가져옵니다. 정의 된 속성 목록은 here (thanks @ NikitaBeloglazov)에서 찾을 수 있습니다.

properties.getProperty()은 누군가 Properties 유형의 객체를 초기화 한 결과입니다. 그들은 you can get what System has as a Properties instance이지만 같은 것은 아닙니다.

Properties 객체는 매우 자주 자바 프로퍼티 파일 (이 작업을 수행하는 방법에 대한 here 참조)

+0

시스템 속성에 대한 링크를 자바 튜토리얼에 추가 할 수 있습니까? http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html –

+0

@NikitaBeloglazov 감사합니다! 추가 – fge

+0

감사합니다, 이것은 아주 좋은 explaination입니다! –

8

System.getProperty(propName)System.getProperties().getProperty(propName)에 대한 바로 가기입니다로드의 결과입니다.

그러나 java.util.Properties은 단지 java.utils.Hashtable의 하위 클래스이므로 인스턴스가 코드의 모든 곳에서 만들어지고 데이터로 채워질 수 있습니다. 물론 코드

Properties props = System.getProperties(); 
props.getProperty("os.name"); 

그러나

Properties props = new Properties(); 
props.load(new FileInputStream("myprops.properties")) 
props.getProperty("os.name"); 

가 동일하지 않습니다

System.getProperty("os.name"); 

과 동일합니다.

+0

도움 주셔서 감사합니다. 이제는 알아낼 수 있습니다. –

2

System 클래스는 실행중인 JVM을 참조합니다 (OS에서 정보를 얻을 수 있음). SystemgetProperty을 사용하면 실제 속성을 얻을 수 있습니다.

Property 클래스는 기본적으로 영광스러운 해시 테이블입니다. 자신을 완전히 정의 할 수 있으므로 getProperty()을 설정하면 설정 한 결과가 나타납니다. Property 클래스의 유용성은 XML 파서가 내장되어있어 파일에서 속성을 읽을 수 있다는 것입니다.

+0

답변 해 주셔서 감사합니다. 매우 도움이됩니다. –

관련 문제