티스토리 뷰

개요

Java 기반의 프로젝트는 크게 2개로 파일의 성격을 구분할 수 있다. 첫째는 .java로 끝나는(빌드시 .class로 컴파일될) Source 파일이고 둘째는 소스가 아닌(컴파일의 대상이 아닌) Resource 파일이다. 흔히 작성하게 되는 각종 .xml 파일부터 .html, .js, .css 파일까지 모두 이 리소스 파일에 해당한다. 이번 글에서는 이러한 리소스 파일을 획득하는 방법을 설명하고자 한다.

리소스 파일 획득하기

// /src/main/resources/something.txt 파일을 읽어 온다.
String something = IOUtils.toString(getClass().getResourceAsStream("/something.txt"), "UTF-8");
  • Maven 또는 Gradle 기반 프로젝트는 /src/main/resources 디렉토리에 리소스 파일을 저장하도록 되어 있다. 이 디렉토리에 위치한 파일들은 .jar 파일로 빌드시 최상위인 루트 디렉토리에 위치하게 되는데 이 말은 런타임시 해당 파일들이 ROOT CLASSPATH에 위치한다는 것을 의미한다.

  • CLASSPATHROOT에 위치하므로 위와 같이 절대 경로인 /를 앞에 명시함으로서 리소스 파일을 로드할 수 있다. 상대 경로를 명시할 경우 명령을 호출한 클래스의 위치에 따라 경로가 달라진다.

  • getClass().getResourceAsStream() 메써드는 InputStream 오브젝트를 반환환다. 대상 리소스 파일이 텍스트일 경우 Apache Commons IO가 제공하는 IOUtils.toString()를 이용하여 대상 리소스 파일을 간편하게 문자열로 획득할 수 있다.

  • 만약 대상 리소스 파일이 존재하지 않을 경우 java.lang.NullPointerException을 발생시킨다.

참고 글

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함