반응형
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;
}
}
반응형
'BE > Java' 카테고리의 다른 글
[Java 8] Java 8과 함수형 인터페이스 (0) | 2023.04.11 |
---|---|
[Mockito] Mockito (0) | 2023.04.05 |
[Java] Enum to String & String to Enum (0) | 2023.03.09 |
[Junit 5] 확장 모델 (0) | 2023.02.15 |
[Junit 5] Test Instance, Test Order, junit 전역 설정 (0) | 2023.02.14 |