Web工程下读取文件的几种方法

1、读取文件系统路径文件 * 一定要使用绝对路径

String fileName = getServletContext().getRealPath("/index.jsp"); // 读取WebRoot下,Linux下是webapp下
String fileName2 = getServletContext().getRealPath(
"/WEB-INF/a.properties");// 读取WebRoot/WEB-INF/a.properties

2、读取classpath下文件

String fileName3 = ReadFile.class.getResource("/info.txt").getFile();// 读取src下info.txt
String fileName4 = ReadFile.class.getResource(
"/cn/itcast/config/info.txt").getFile();// 读取 src下
// cn.itcast.config包下info.txt

3、使用ResourceBundle 快速读取src下properties文件

String value = ResourceBundle.getBundle("myproperties").getString(
"name");// 读取src下 基名为myproperties的properties文件,获取其中name配置值

4、使用Properties类加载Properties文件

// 读取src下b.properties
InputStream in = ReadFile.class.getResourceAsStream("/b.properties");
Properties properties = new Properties();
properties.load(in);
String value2 = properties.getProperty("name"); // 获得name属性

SpringBoot文件下载代码

@RequestMapping(value = "/download",produces = "application/octet-stream;charset=UTF-8")  
    public ResponseEntity export(HttpServletRequest request) throws IOException {  
        String fileName=new String("批量续保模板.xlsx".getBytes("UTF-8"),"iso-8859-1");
        HttpHeaders headers = new HttpHeaders(); 
        File file = new File(request.getSession().getServletContext().getRealPath("/template/批量续保模板.xlsx"));
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    //设置响应方式
        headers.setContentDispositionFormData("attachment", fileName);  //设置响应文件 
        return new ResponseEntity(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);   //把文件以二进制形式写回 
    }

你可能感兴趣的:(Web工程下读取文件的几种方法)