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日由丙火发布,转载请注明出处
 
                                     
                                     
                                    