知识点
1.直接通过File寻找文件是找不到的,因为文件是打到jar包中的,jar本身是一个文件,文件中是无法通过file进入目录获取的,只能通过类加载器加载资源得到流,对流进行处理
2. InputStream is = Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
举个例子项目中放入某个业务的模板前端有下载模板:
public void download(HttpServletResponse response){
InputStream is = null;
BufferedInputStream bfIs = null;
ServerletOutputStream out = null;
String fileName = "下载的文件";
try{
is = this.getClass().getResourceAsStream("filepath");
bfIs = new BufferedInputStream(is);
//解决文件名下载后乱码问题
String encodeName = URLEncode.encode(fileName, "utf-8");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" +encodeName);
//获取响应报文输出流对象
out = response.getOUtputStream();
byte[] b = new byte[1024];
int len;
while((len = bfIs.read(b)) != -1){
out.write(b, 0, len);
}
}catch(){
log.infp(e.getMassege());
}finally{
try{
if(is != null){
is.close();
}
if(bfIs != null){
bfIs.close();
}
if(out != null){
out.close();
}
}catch(){
log.infp(e.getMassege());
}
}
}