服务部署后读取Jar包内资源遇到文件找不到的问题

我们在开发环境的IDE内能顺利的跑通下面的读取资源文件的方法,但是服务部署到测试环境后会出现文件找不到的问题。

String filePath = this.getClass().getResource("/resource/hello.zip").getFile();
File file = new File(filePath);
...

部署到测试环境后,发现filePath的值变成了:

file:/disk1/webroot/WEB-INF/lib/service.jar!/resource/hello.zip

显然Java的文件系统不认识这样的文件路径,所以会包文件找不到的错误。如果我们需要在运行的时候用到Resource中的文件,只有一种办法,就是用以下方法获取文件的InputStream,然后将文件用流的方式读取到内存,然后再使用,或者通过流的方式将Resource中的文件复制到文件系统其他位置,再读取。下面是从jar包中通过流的方式将文件复制到文件系统其他位置的参考代码:

public static void copyResourceFileToFolder(String resourceName , String targetFilePath){
    InputStream is = null;
    FileOutputStream os = null;
    try {
        is = ResourceUtil.class.getClassLoader().getResourceAsStream(getCPResourcePath(resourceName));

        if (is != null) {
            os = new FileOutputStream(targetFilePath);

            int len = 0;
            byte[] buf = new byte[1024];
            while ((len = is.read(buf)) != -1) {
                os.write(buf, 0, len);
            }
        }
    }
    catch (IOException ex2){
        throw new RuntimeException(ex2);
    }
    finally {
        if(null != is){
            try {
                is.close();
            }
            catch (IOException ex2){
                throw new RuntimeException(ex2);
            }
        }

        if(null != os){
            try {
                os.close();
            }
            catch (IOException ex2){
                throw new RuntimeException(ex2);
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,732评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,101评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,791评论 25 709
  • 能来什么接什么。 只有能接住并且能在这件事吸取教训并迅速壮大自己能力。这件事一定是好事。如果抗不住就死命的抗如果抗...
    宋大绵阅读 2,600评论 0 0
  • 您是海洋上的灯塔 指引我们前进的方向 您是黑暗中的光芒 点亮我们向上的希望 您是三月里的春风 播种我们青春的梦想 ...
    月舞倾城阅读 3,196评论 44 50