Servlet 中的文件读取问题 舅舅孩子吧

上图是目录结构

我想用DownloadServlet 来读取 count.properties

代码如下

@Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        InputStream in;
        OutputStream out;
        String fileName = "/resources/count.properties";
        out = resp.getOutputStream();
        in = getServletContext().getResourceAsStream(fileName);
        int length = in.available();   //在这行出现空指针报错
        byte[] bytes = new byte[512];
        int readBuffer;
        resp.setContentType("application/force-download");
        resp.addHeader("Content-Disposition","attachment;filename=\""+fileName+"\"");
        resp.addHeader("Content-length",String.valueOf(length));
        while((readBuffer = in.read(bytes))!=-1)
        {
            out.write(bytes,0,readBuffer);
        }
        in.close();
        out.close();
    }

servlet 中的路径问题怎么这么难搞啊 舅舅孩子吧

/WEB-INF/classes/resources/count.properties
 
//第一种方法
// 根目录是class文件所在目录,如果以 /开头从classpath目录中找aa.properties;如果不以/开头从当前类所在的包中找InputStream inputStream = ReadPropertiesServlet.class.getResourceAsStream("/aa.properties"); 
Properties properties = new Properties();
properties.load(inputStream);
//第二种方法
//代表WebProject工程名,同级不需'/'
 ServletContext servletContext = getServletContext();
 InputStream inputStream = servletContext.getResourceAsStream("aa.properties");
//第三种方法
//使用ClassLoader加载配置文件如,如项目目录: pro\WEB-INF\classes
ClassLoader classLoader = ReadPropertiesServlet.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("../../aa.properties");

 

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您可以仔细阅读看是否解决了您的问题。

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~