为什么 要从jar中提取资源到本地磁盘? 如何 将资源保存到本地磁盘?导出这个文件 干什么 ?
首先上来的灵魂三问。简单来说就是当你在服务器上测试或者support时,由于一般是没有合适的权限去在服务器上“写文件”,但是你运行的程序时是有这些权限的,所以你可以在程序中开一个窗口,比如定义一个API,当调用这个API的时候就可以把jar包里的资前搜源文件导出并保存在服务器本地。
首先让我们定义一个class类来表示从资源文件夹中提取的文件
然后创建一个帮助类来从渣悔历资源文件夹中提取文件并保存到本地磁盘。
ResourceLoader 是 Springframwork 里的“临时工”,主要用来干脏活累活的,其实就是的一个开箱即用的帮助类
最后你就可以在你的 Controller 里定义一个新的 GetMapping 接口。
调用上面创建的方法就可以 魔术般 的把文件搬到服务器上了。
如果有什么总是可以给我留言或者到我的网站上联系如搜我
www.todzhang.com
在目前裂链答的微服务和容器部署的SpringBoot坏境下,我们一般将项目直接唤孝打成 jar包的方式运行(java -jar *),我们可能需要读取resources目录下的自定义文件,想在程序运行时找到肆慧该目录,并读取需要的文件。
当时我使用 System.getProperty("user.dir") 获取工作目录的坑,本地idea工具运行没问题,但是一但打成jar包,路径会变成jar包所在的目录,无法读取jar内部的文件, 不建议用这种方式 。
由于jar中的文件都属于资源的一种,所以获取需从类加载器进行获取。正确的姿势是采用 this.getClass().getClassLoader().getResourceAsStream() 的方式。
读取自定义文件时,由于getResourceAsStream方法返回的是一个InputStream流,采用InputStreamReader这种方式 最好指定一种编码方式 ,不然可能 中文乱码 !(我在解析xml时中文乱码)
建立一个JavaResources对桥型象,并将它初始化为一个包含我们感兴趣资源的JAR文件--Images.jar。
然后使用JavaResources类的getResource()方法从logo.gif取出原始数据,然后调用AWT工具箱的createImage()方法从原始数据建立一个Image对象实例。
建立一个JavaResources对象,并将它初始化穗山为一个包含我们感兴趣资源的JAR文件--Images.jar。
然后使用JavaResources类的getResource()方法从logo.gif取出原始数据,然后调用AWT工具箱的createImage()方法猜消中从原始数据建立一个Image对象实例。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)