BE/Java

[Java] Jar파일에 있는 파일 읽기

멍목 2023. 3. 31. 00:02
반응형

 File Class를 이용해서 File을 읽을 때는 정상 작동하던 소스가 Jar로 패키징하고 실행하니 파일을 찾을 수 없다고 한다.

확인해보니, File Class는 Jar 파일 내부에 있는 파일은 읽을 수 없다고 한다.

 

File Class 대신에 ClassLoader Class를 이용해서 Jar 내부 및 외부의 파일을 읽을 수 있다.

파일을 읽는 함수는 아래 소스와 같이 공통 함수로 따로 빼서 사용하는 것이 좋을 듯 하다.

 

 


public static String getFileContent(String fileName) throws IOException {
    try {
        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
        InputStream is = classLoader.getResourceAsStream(fileName);

        if(is == null){
            return null;
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        StringBuffer buffer = new StringBuffer();
        int read;
        char[] bf = new char[1024];
        while ((read = br.read(bf)) > 0) {
            buffer.append(bf, 0, read);
        }
        br.close();
        is.close();

        return buffer.toString();
    } catch (IOException e) {
        logger.error(CommonUtil.getStackTraceString(e));
        throw e;
    }
}

 

반응형