springboot-src/main/resource-资源文件读取下载
一、读取 src/main/resource 目录下的文件
写的是单元测试,项目上用代码一样。
目录结构
java
ResourceUtilsTest.java
resources
text.txt
ResourceUtilsTest.java 代码
package com.mytest;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ResourceUtilTest {
@Test
public void testReadFile() throws IOException {
Resource resource = new ClassPathResource("test.txt");
try(InputStream is = resource.getInputStream()){
try(InputStreamReader isr = new InputStreamReader(is)) {
BufferedReader br = new BufferedReader(isr);
String data = null;
while ((data = br.readLine()) != null) {
System.out.println(data);
}
br.close();
}
}
}
}
二、springboot下载资源文件
@GetMapping(value = "/testdownload")
public void priceTemplateDownload(HttpServletRequest request, HttpServletResponse response){
try {
String path = "test.txt";
ClassPathResource resource = new ClassPathResource(path)
// 读到流中
try(InputStream inputStream = resource.getInputStream()) {
response.reset();
response.setContentType("application/octet-stream");
String filename = new File(path).getName();
response.addHeader("Content-Disposition"
, "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
ServletOutputStream outputStream = response.getOutputStream();
byte[] b = new byte[1024];
int len;
//从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1
while ((len = inputStream.read(b)) > 0) {
outputStream.write(b, 0, len);
}
}
}catch (Exception ex){
System.out.println(ex.toString());
}
}