더북(TheBook)

4.4.2 리소스 로드


Class 클래스가 제공하는 유용한 서비스 중 하나는 설정 파일이나 이미지처럼 프로그램에 필요한 리소스를 찾아오는 것이다. 클래스 파일이 있는 곳과 같은 디렉터리에 리소스를 넣었다면 다음 방법으로 리소스 파일에 대응하는 입력 스트림을 열 수 있다.

InputStream stream = MyClass.class.getResourceAsStream("config.txt");

Scanner in = new Scanner(stream);


Note ≣

Applet.getAudioClip 같은 일부 레거시 메서드와 javax.swing.ImageIcon 생성자는 URL 객체에서 데이터를 읽는다. 이런 메서드나 생성자를 사용할 때는 지정한 리소스에 대응하는 URL을 반환하는 getResource 메서드를 쓰면 된다.


리소스가 서브디렉터리에 있을 때는 해당 서브디렉터리를 상대 경로나 절대 경로로 지정한다. 예를 들어 MyClass.class.getResourceAsStream("/config/menus.txt")MyClass가 속한 패키지의 루트를 담은 디렉터리를 기준으로 config/menus.txt를 찾아온다.

클래스들을 JAR 파일로 패키징할 때 클래스 파일과 리소스를 함께 넣으면 해당 리소스도 찾아올 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.