上图是目录结构
我想用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");
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您可以仔细阅读看是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~