본문 바로가기

Java

[JAVA] classloader#getSystemResourceAsStream()

public static Properties getProperties(String filePath) throws IOException{
  //ClassLoader로 InputStream 생성  
  //InputStream is = ClassLoader.getSystemResourceAsStream(filePath);
  InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);
  Properties props = new Properties();
  props.load(is);
  return props;
}


getClass().getResourceAsStream(filePath) 와 같음.

단 getClass().getResourceAsStream(filePath) 는 static context에서 사용할 수 없음.


Class::getResource(name)
ClassLoader::getResource(name) 은 차이가 있다.

ClassLoader.getResource(name)의 'name'은 '/'로 시작할 수 없고 항상 상대경로로 인식한다.
반면 Class.getResource(name)의 'name'은 '/'로 시작해야만 절대경로가 된다.