[에러] 스프링부트 FileInputStream properties 파일 불러오기

Nam_JU·2022년 3월 10일
1

ErrorLog

목록 보기
3/26

스프링부트 FileInputStream properties 파일 불러오기 에러


에러 배경

인텔리제이로 properties파일을 불러오기 위해 FileInputStream을 사용했는데 에러가 났다.


실행 했던 코드

@SpringBootApplication
public class DaoInterfaceApplication {

    public static void main(String[] args) throws IOException {
        SpringApplication.run(DaoInterfaceApplication.class, args);

        FileInputStream fis = new FileInputStream("application.properties");

        Properties prop = new Properties();
        prop.load(fis);

        String dbType = prop.getProperty("DB-TYPE");

        UserInfo userInfo = new UserInfo();
        UserInfoDao userInfoDao = null;
        if(dbType.equals("ORACLE")) {
            userInfoDao = new UserinfoOracleDao();
        }
        else if(dbType.equals("MYSQL")){
         userInfoDao = new UserinfoMysqlDao();
        }else{
            System.out.println("db error");
            return;
        }

        userInfoDao.insertUserInfo(userInfo);
        userInfoDao.updateUserInfo(userInfo);
        userInfoDao.deleteUserInfo(userInfo);

    }

}

에러 코드

Exception in thread "main" java.io.FileNotFoundException: application.properties (No such file or directory)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
	at com.example.daointerface.DaoInterfaceApplication.main(DaoInterfaceApplication.java:21)

에러 원인

스택오버 플로우

https://stackoverflow.com/questions/44399422/read-file-from-resources-folder-in-spring-boot

나의 경우 FileInputStream에 직접적으로 경로를 넣었는데 스택오버 플로우의 코드를 보니 ResourceUtils.getFile을 통해 경로를 가져온것을 확인할 수 있었다. 파일 위치에 "classpath:"를 추가했고 Try-catch 문으로 IOException e 를 붙였더니 제대로 실행 되었다.

@SpringBootApplication
public class DaoInterfaceApplication {

    public static void main(String[] args) throws IOException {
        SpringApplication.run(DaoInterfaceApplication.class, args);

            Properties properties = new Properties();
            try {
                File file = ResourceUtils.getFile("classpath:application.properties");
                InputStream in = new FileInputStream(file);
                properties.load(in);
                String dbType = properties.getProperty("DB-TYPE");

                UserInfo userInfo = new UserInfo();
                UserInfoDao userInfoDao = null;
                if(dbType.equals("ORACLE")) {
                    userInfoDao = new UserinfoOracleDao();
                }
                else if(dbType.equals("MYSQL")){
                    userInfoDao = new UserinfoMysqlDao();
                }else{
                    System.out.println("db error");
                    return;
                }

                userInfoDao.insertUserInfo(userInfo);
                userInfoDao.updateUserInfo(userInfo);
                userInfoDao.deleteUserInfo(userInfo);
                System.out.println(dbType);
            } catch (IOException e) {

            }
            return;



    }

}

에러 해결

profile
개발기록

0개의 댓글