작성
·
1.5K
1
답변 2
0
구글링을 통해서 InputStream을 통해 작성해야한다는 부분을 찾았는데 아무래도 제가 잘 사용하지 못했던것같습니다.
그런데 말씀해주신대로 저는 java -jar로 실행하지 않고
메인으로 실행했는데 file not found가 떴었네요.
도움 감사합니다.
0
실행하실 때 JAR로 패키징해서 java -jar로 실행하셨나요? 그때는 사실 InputStream을 써서 읽어야되요. File을 써서 코딩한건 제 실수입니다. File로 읽을 수 있는건 자바 메인으로 실행했을 때 파일 경로로 읽을 수 있는거고 JAR 안에 들이었는 리소스를 클래스패스로 접근해서 읽을 때는 파일시스템에 있는 파일이 아니라 JAR 안에 있는 파일이라서 getFile()로 읽을 수 없습니다. 다음과 같이 해보세요.
@PostConstruct
public void initZoneData() throws IOException {
if (zoneRepository.count() == 0) {
Resource resource = new ClassPathResource("zones_kr.csv");
InputStream zonesInputStream = resource.getInputStream();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(zonesInputStream)) ) {
List<Zone> zoneList = reader.lines().map(line -> {
String[] split = line.split(",");
return Zone.builder().city(split[0]).localNameOfCity(split[1]).province(split[2]).build();
}).collect(Collectors.toList());
zoneRepository.saveAll(zoneList);
}
}
}