首页 > 其他分享 >springboot打成jar包resources下文件的获取

springboot打成jar包resources下文件的获取

时间:2023-04-14 16:11:19浏览次数:47  
标签:文件 springboot jar 获取 io import resources out

import org.apache.poi.util.IOUtils;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.core.io.ClassPathResource;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 复制jar包内文件到外面
 *
 * @author xxf
 * @date 2023/4/14
 */

public class FileCopyUtils {
    public static String getPath(String path) {
        //获取资源文件
        ClassPathResource resource = new ClassPathResource(path);
        InputStream fis = null;
        FileOutputStream out = null;
        try {
            //重新组装路径
            String pathName = getJarFilePath() + "/" + resource.getFilename();
            //获取资源文件流
            fis = resource.getInputStream();
            //获取输出的文件流
            out = new FileOutputStream(pathName);
            //将资源文件拷贝到与jar包同目录下
            IOUtils.copy(fis, out);
            return pathName;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fis.close();
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 获取jar包所在目录
     *
     * @date 2023/4/14
     */
    private static String getJarFilePath() {
        ApplicationHome home = new ApplicationHome(FileCopyUtils.class);
        File jarFile = home.getSource();
        return jarFile.getParentFile().toString();
    }
}

调用getPath方法需要传入一个资源的相对路径

 

 

 如图所示,例如:FeilCopyUtils.getPath("key/apiclient_key.pem")

我的这个工具类主要是为了获取这个文件的路径,jar包里面的路径不能被识别

所以,我将jar包里面的文件复制出来与jar包为同一目录。并将该文件全路径返回。

大家如果只需要获取文件流,没必要全部拷贝代码。

标签:文件,springboot,jar,获取,io,import,resources,out
From: https://www.cnblogs.com/xxfcode/p/17318621.html

相关文章

  • Springboot集成MongoDB存储文件、读取文件
    一、前言和开发环境及配置可以转载,但请注明出处。  之前自己写的SpringBoot整合MongoDB的聚合查询操作,感兴趣的可以点击查阅。https://www.cnblogs.com/zaoyu/p/springboot-mongodb.html 使用mongodb存储文件并实现读取,通过springboot集成mongodb操作。 可以有两种实现......
  • springboot-web-mybatis
    Restful开发规范Restful是网络应用接口程序的接口设计风格,基于HTTP协议GET:查询POST:新增PUT:修改DELETE:删除Restful是一种风格,可以不遵守如何为请求参数设置默认值可以在Service层判断是否为null,如果为true则给它赋值默认值可以在Controller层参数列表添加@RequstPa......
  • 使用maven解决jar冲突
    1.pom部分配置如下<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.1</version><executions>......
  • Java SpringBoot 中,动态执行 bean 对象中的方法
    根据不同的条件,调用不同的bean对象,执行对象中的方法SpringUtils工具类packagecom.vipsoft.web.utils;importcn.hutool.core.util.ArrayUtil;importorg.springframework.aop.framework.AopContext;importorg.springframework.beans.BeansException;importorg.sprin......
  • Failed to read artifact descriptor for com.fasterxml.jackson.core:jackson-databi
    http://stackoverflow.com/questions/42386730/issue-with-maxmind-dependency<dependency><groupId>com.maxmind.geoip2</groupId><artifactId>geoip2</artifactId><version>2.8.0</version>......
  • SpringBoot 集成 MybatisPlus 八——插件
    1Mybatis插件机制Mybatis插件是对Executor、StatementHandler、ParameterHandler、ResultSetHandler这四个接口上的方法进行拦截,利用JDK动态代理机制,为这些接口的实现类创建代理对象,在执行方法时,先去执行代理对象的方法,从而执行自己编写的拦截逻辑。ExecutorMyBatis的内部执行器......
  • Windows上删除jar包时提示已经被打开,怎样找到并杀掉
    场景Windows服务器上删除某个jar包时提示已经在Java....中被打开。则可能是该jar包之前运行时被异常关闭,此时线程还在,需要找到该线程并杀掉它。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、打开cmd,输入jps,查看所有运行jar包的PID  这里我们明确知道该j......
  • java 处理常量字符串过长 & springboot 项目读取 resouces 文件夹下的文件内容
    长字符串起因项目里面有一长串的加密字符串(最长的万多个字符),需要拼接作为参数发送给第三方。如果我们使用枚举定义的话,idea编译的时候就会出现编译报错Error:java:常量字符串过长解决想法网上还有一个说法,说是编译器问题,修改idea工具的编译为eclipse即可......
  • SpringBoot 自定义对象映射器的使用
    SpringBoot底层默认使用Jackson进行Java实体对象与Json之间的转换,有时转换的效果并不是我们所期望的,需要进行额外的处理工作,有经验的小伙伴们,肯定遇到过下面两种典型的情况:当对象的属性是日期类型时,转换成json后的结果并不是我们想要的效果,还需要我们额外进行显示格式......
  • springboot学习之四(整和mybatis)
    springboot整和mybatis    1.mapper文件开发 2.纯注解开发    https://www.cnblogs.com/fps2tao/p/13821490.html ......