어떠하호
321
2018-04-12 17:22:37
3
11227

FileNotFoundException 지정된 경로를 찾을 수 없습니다 에러 문의드립니다.


안녕하세요!


db에서 엑셀을 받아 C:\Users\ower\Downloads경로로 저장하려고하는데 에러가 나서 질문드립니다.


java.io.FileNotFoundException: C:\Users\ower\Downloads\test_20180412170116692.xls (지정된 경로를 찾을 수 없습니다)

에러가 나옵니다.

대용량데이터(7만건 이상)를 다운받는거라 poi로 구현하고 

공용폴더인 C:\Users\ower\Downloads\에 저장하려고하는데 에러가 나서 문의드립니다.


로컬에서는 경로를 잘 읽어오는데 서버에만 올리면 위 에러가 나옵니다.

작성한 소스코드는 아래와 같습니다.

public void xlsxWiter(List<Sal04VO> list) {

        XSSFWorkbook workbook = new XSSFWorkbook();
        
        // 워크시트 생성
        XSSFSheet sheet = workbook.createSheet();
      
        XSSFRow row = sheet.createRow(0);
       
        XSSFCell cell;
        
    
        //업무상 주석처리했습니다.    
        Sal04VO vo;
        for(int rowIdx=0; rowIdx < list.size(); rowIdx++) {
            vo = list.get(rowIdx);
            
            //행생성도 주석처리.    
        }
        
        long time = System.currentTimeMillis(); 
        SimpleDateFormat dayTime = new SimpleDateFormat("yyyyMMddHHmmssSSS"); 
        String strDT = dayTime.format(new Date(time)); 
        
        //C:\\Users\\ower\\Downloads\\
        File file = new File("C:\\Users\\ower\\Downloads\\test_" + strDT + ".xls");
//        File file = new File("C:\\excel\\testWrite.xls");

        FileOutputStream fos = null;
        
        try {
            fos = new FileOutputStream(file);
            workbook.write(fos);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
               // if(workbook!=null) workbook.close();
                if(fos!=null) fos.close();
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

에러메세지는 아래와 같습니다.


java.io.FileNotFoundException: C:\Users\ower\Downloads\test_20180412170116692.xls (지정된 경로를 찾을 수 없습니다)

at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
at kr.co.eoullim.util.ExcelController.xlsxWiter(ExcelController.java:227)
at kr.co.eoullim.rsm.sales.controller.Sal04Controller.excelDownLoad(Sal04Controller.java:133)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:471)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:705)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:243)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:141)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:93)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:124)
at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:93)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:204)
at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:226)

0
  • 답변 3

  • NULL만나면
    2k
    2018-04-12 17:27:38

    로컬과 서버는 무슨 차이가 있을까요?


    서버에 뭔가 문제가 있겠죠.


    전체 경로 중에 일부 폴더가 없다거나


    모든 폴더가 정상 생성되어 있다고 해도 서버 운영체제의 폴더 권한(읽기, 쓰기 등)이 없다거나.


    뭐 그런거 아닐까요?

  • PRO그래머
    3k
    2018-04-12 17:28:27 작성 2018-04-12 17:29:08 수정됨

    자바 서버단에 경로 지정하실땐 \ 가 아니라 / 로 하셔야할텐데

    C:\\Users\\ower\\Downloads\\test_" + strDT + ".xls

    가 아니라

    C:/Users/ower/Downloads/test_" + strDT + ".xls

    한번 바꿔보세요
    원도우 서버일때 기준입니다만 c드라이브로 시작하는거보니 윈도우 서버이신거같네요

  • 포포핀
    809
    2018-04-12 17:30:09

    폴더가 없어서 그런거 같은데요

    if(!file.exists()){

    file.mkdirs();

    }

  • 로그인을 하시면 답변을 등록할 수 있습니다.