【问题标题】:Display list of files in webpage using servlet使用 servlet 在网页中显示文件列表
【发布时间】:2013-09-04 14:32:38
【问题描述】:

我是 Java EE 的新手,我想在网页中显示 PDF 缩略图列表。这些 PDF 存储在src/main/webapp/pdf 的文件夹中,我想阅读此文件夹以获取所有文件名。这是我的代码:

@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

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)

这是我的结构:

我想要的是一个读取 PDF 文件夹并返回包含 PDF 文件名的 JSON 的 Web 服务,我将使用 Ajax 在 JavaScript 中调用此服务。

谁能帮我让我的脚本运行良好?或者有谁有更好的解决方案?

谢谢:)

【问题讨论】:

    标签: jakarta-ee tomcat servlets


    【解决方案1】:

    来自File.listFiles()的Javadoc的引用

    如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

    所以您的路径不正确(因为您的 servlet 容器的当前目录未定义)。你有这些可能性:

    • 使用绝对路径(如果您将 PDF 存储在 Web 应用之外,这是合适的)

    • 使用getRealPath()(这应该适合您的用例;PDF 是 webapp 的一部分):

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

    【讨论】:

      【解决方案2】:

      铍,我试过你的建议,效果很好!

      为了澄清这个项目,我展示一下我的案例:

      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();
      }
      

      【讨论】:

        猜你喜欢
        • 2012-05-24
        • 1970-01-01
        • 2015-07-14
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多