电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

解決SpringBoot ClassPathResource的大坑(FileNotFoundException)

瀏覽:8日期:2023-03-04 11:14:39
FileNotFoundException

SpringBoot 項目將項目打包成jar包,使用ClassPathResource時使用的是絕對路徑,直接調用getFile()方法會報

FileNotFoundException

直接上代碼:

通過賦值文件為臨時文件的方式解決

val resource = ClassPathResource('my.keystore')val temp = Files.createTempFile('my.keystore', 'tmp')Files.copy(resource.inputStream, temp, StandardCopyOption.REPLACE_EXISTING)

this.getClass().getClassLoader().getResourceAsStream('apiclient_cert.p12');web項目下讀取classpath下的文件心得

使用SpringBoot遇到的大坑

在讀取springBoot+gradle構建的項目時,如果使用傳統的FileInputStream讀取文件流或者ResourceUtils工具類的方式,都會失敗,下面解釋原因:

一、讀取文件的三種方式:

1. ResourceUtils工具類

import org.springframework.util.ResourceUtils;//使用:File file= ResourceUtils.getFile('classpath:test.txt');

2. FileInputStream文件流的方式讀取

解決SpringBoot ClassPathResource的大坑(FileNotFoundException)

(該方式為按行讀取,若不是按行處理,需要像圖中將每行數據存在一個buffer中,然后轉成String處理)

3. ClassPathResource獲取文件流的方式

ClassPathResource classPathResource = new ClassPathResource('test.txt');

獲取文件:classPathResource .getFile();

獲取文件流:classPathResource .getInputStream();

二、不同web容器讀取文件的區別

有兩種常見的web容器:

1. 第一種是普通的web項目,特點是jar/war壓縮包會隨著容器的啟動解壓縮成一個文件夾,當項目訪問的時候,實際是訪問文件夾,而非jar或者war包。

該種方式下,用獲取路徑的方法:

this.getClass().getResource('/')+fileName

或者獲取流的方法:

this.getClass().getResourceAsStream(failName);

都可以成功。

2. 第二種是內嵌web容器,Spring boot就是內嵌web容器,其特點是只有一個jar文件,在容器啟動后不會解壓縮,項目實際訪問的就是jar/war包

該種方式最容易遇坑!!最大的坑就是,

this.getClass().getResource('/')+fileName

在本地windows下能完美找到路徑,可是在linux測試服務器下就失敗,所以讀取jar中的文件只能用流讀取,不能用file,即只能用方式三讀取。

所以,用spring boot搭建的工程,只能用

classPathResource .getInputStream();

獲取文件流

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 江苏农村商业银行招聘网_2024江苏农商行考试指南_江苏农商行校园招聘 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | CPSE安博会| 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 嘉兴泰东园林景观工程有限公司_花箱护栏 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 哈希PC1R1A,哈希CA9300,哈希SC4500-上海鑫嵩实业有限公司 | 北京开源多邦科技发展有限公司官网 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 电机保护器-电动机综合保护器-上海硕吉电器有限公司 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 营养师网,营养师考试时间,报名入口—网站首页 | 纳米涂料品牌 防雾抗污纳米陶瓷涂料厂家_虹瓷科技 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 |