从fatjar中读取资源文件

需求

传个模板文件到服务器上,读取这个模板文件做些事情

做法

将模板文件放到Java工程的资源文件目录里,然后将文件拷贝到服务器上的某个目录下,程序中用到的时候从该目录读取

注意

因为程序是打成fatjar后再服务器上运行的,所以不能像以前遍历资源目录的方式去读模板文件,需要使用流的方式读取文件

代码

import org.apache.commons.io.IOUtils;


public String getTemplateFile(String fileName) {
        String templatePath = System.getProperty("user.dir") + File.separator + fileName;
        try {
            File templateFile = new File(templatePath);
            if (templateFile.exists()) {
                return templatePath;
            }
            //该位置没则从fatjar中取
            InputStream inputStream = LayoutFileConfig.class.getClassLoader().getResourceAsStream(fileName);
            if (inputStream == null) {
                logger.warn("getTemplateFile exception: not have template file " + fileName);
                return templatePath;
            }
            OutputStream outputStream = new FileOutputStream(templateFile);
            IOUtils.copy(inputStream, outputStream);
        } catch (Exception e) {
            logger.error("getTemplateFile exception ", e);
        }

        return templatePath;
    }

参考

Spring-Boot无法加载ClasspathResource问题

你可能感兴趣的:(Java,Java,基础)