springboot 读取文件
示例代码
public class Test {
public byte[] getFile(String url){
// 根据路径查询文件
InputStream inputStream = null;
try{
// 先用相对路径进行查询
inputStream = new FileInputStream(url);
}catch(FileNotFoundException e){
// 文件没有发现时,查询相对路径
inputStream = Test.class.getClassLoader().getResourceAsStream(url);
}
// 将文件转换为 byte[]
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
try{
while ((len = inputStream.read(buffer)) > -1) {
byteArrayOutputStream.write(buffer, 0, len);
}
}catch (IOException e){
e.printStackTrace();
}finally {
try {
inputStream.close();
byteArrayOutputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
byte[] result = byteArrayOutputStream.toByteArray();
// 返回数据
return result;
}
}
扩展
1、Class.getResourceAsStream(String path)
path 不以 '/' 开头时,默认是从此类所在的包下获取资源
path 以 '/' 开头时,从 classPath(src根目录) 下获取资源
2、Class.getClassLoader.getResourceAsStream(String path)
从 classPath(src根目录) 下获取资源
path 不能以 '/' 开头
3、路径分隔符使用 '/',尽量不要使用 '\'
因为 jar 中不识别 '\'
4、如果 springboot 需要打 jar 部署,需使用 getResourceAsStream 获取项目中的文件
因为 jar 中的资源,有专门的URL形式,如果按照标准的文件资源定位形式:new File(url) 定位文件,会抛出 java.io.FileNotFoundException
// jar url 格式: jar:<url>!/{entry}
// 如:
jar:test.jar!/test/test.xlsx
正文到此结束
- 本文标签: Java Spring Boot
- 版权声明: 本站原创文章,于2021年10月28日由丙火发布,转载请注明出处