본문 바로가기
프로그래밍/Spring

ClassPathResource를 이용한 file 생성

by Mr-후 2020. 2. 26.
반응형

java spring boot project에서 properties에서 file의 path 또는 name을 지정하고 생성하는 방식으로 사용하고 있다가 특정 경로를 설정해서 사용하는 방법 대신 resource폴더 아래에 특정 디렉토리를 만들고 파일을 생성해서 사용하는 방식으로 변경을 하고자 한다면 다음과 같은 방식을 이용해볼것을 권장한다. 

나의 경우 csv file을 만들고 쓰고 읽고 하는 기능을 만들고 있는 중이다. 

    /**
     * csv 파일을 생성하는 메서드
     * @param filePath 파일 경로
     * @param title 파일 제목
     * @param content 내용
     * @return
     */
    public static int createCsvFile(String filePath, String title, String content) {
        int resultCount = 0;
        ClassPathResource resource = new ClassPathResource(filePath + title);
        try {
            Path path = Paths.get(resource.getURI());
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(path.toString(), false));

            bufferedWriter.write(content);
            bufferedWriter.newLine();

            bufferedWriter.flush();
            bufferedWriter.close();
        } catch (IOException ie) {
            ie.printStackTrace();
        }
        return resultCount;
    }

ClassPathResource를 이용해서 csv파일을 생성하는 함수. 

Path, Paths를 보니 내 프로젝트의 target/classes/아래에 resource디렉토리 하위에 생성한 폴더와 파일 경로와 동일하게 파일이 생성되고 내용이 추가된 것을 확인할 수 있었다. 

new FileWriter() 인자 마지막 append 여부를 false로 넣으면 항상 새로운 내용으로 채워진다. 

 

반응형