2013-09-04 2 views
2

Java EE을 처음 사용하여 웹 페이지에 PDF 축소판 목록을 표시하려고합니다. 이 PDF는 src/main/webapp/pdf의 폴더에 저장되며이 폴더를 읽고 모든 파일 이름을 가져 오려고합니다. 내가 가지고 싶은서블릿을 사용하여 웹 페이지에 파일 목록 표시

Structure

은 다음과 같습니다

java.lang.NullPointerException 
    com.multi.services.ListFiles.doGet(ListFiles.java:27) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

내 구조 :이 코드를 실행하면

@Override 
public void doGet(HttpServletRequest req, HttpServletResponse res) { 
    try { 
     res.setContentType("application/json"); 
     res.setCharacterEncoding("UTF-8"); 

     PrintWriter out = res.getWriter(); 
     File pdfFolder = new File("/pdf"); 

     for (File pdf : pdfFolder.listFiles()) { // Line 27 
      out.println(pdf.getName()); 
     } 
    } catch (IOException e) { 
     log.log(Level.SEVERE, e.getMessage()); 
    } 
} 

, 나는 NullPointerException 얻을 : 여기 내 코드입니다 PDF 폴더를 읽고 PDF 파일 이름이 포함 된 JSON을 반환하는 웹 서비스. Ajax를 사용하여 JavaScript로이 서비스를 호출합니다.

누구든지 내 스크립트가 잘 돌아갈 수 있도록 도와 줄 수 있습니까? 아니면 더 좋은 해결책이 있습니까?

감사합니다 :)

답변

4

I/O 오류가 발생하는 경우이 추상 패스 명이 디렉토리를 나타내지하지 않는 경우, 또는 널 (null) File.listFiles()

반환의 자바 독에서 인용.

경로가 올바르지 않습니다 (서블릿 컨테이너의 현재 디렉토리가 정의되지 않았기 때문에). 현재 이러한 가능성이 있습니다

  • 가 (당신이 당신의 웹 애플리케이션의 외부에서 PDF를 저장하는 경우이, 적절한)의 절대 경로를 사용

  • 사용 getRealPath() (이 사용 사례에 적합해야한다 PDF 파일 웹 애플리케이션의 일부)입니다 :

File pdfFolder = 
    new File(req.getSession().getServletContext().getRealPath("/pdf")); 
+0

:이 항목을 명확히하기 위해

, 내 경우를 보여! 당신의 도움을 주셔서 감사합니다 :) –

0

Berilium, 내가 해봤 귀하의 제안과 그것을 잘 작동합니다! 이이 작동

try { 
    File pdfFolder=new File(request.getSession().getServletContext().getRealPath("img/fotos")); 

    System.out.println("PATH---->"+pdfFolder); 

    for (File pdf : pdfFolder.listFiles()) { 

     String s = pdf.getName(); 
     String t = s.substring(0, s.lastIndexOf(".")); 

     if (t.equals(nombre)) { 
      Foto = s; 
      break; 
     } 
    } 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 
관련 문제