日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SpringBoot 如何讀取classpath下的文件

瀏覽:24日期:2023-03-04 13:50:21
SpringBoot 讀取classpath下文件

開發(fā)過程中,必不可少的需要讀取文件,對(duì)于打包方式的不同,還會(huì)存在一些坑,比如以jar包方式部署時(shí),文件都存在于jar包中,某些讀取方式在開發(fā)工程中都可行,但是打包后,由于文件被保存在jar中,會(huì)導(dǎo)致讀取失敗。

這時(shí)就需要通過類加載器讀取文件,類加載器可以讀取jar包中的class類當(dāng)然也可以讀取jar包中的文件。

// 方法1:獲取文件或流this.getClass().getResource('/')+fileName;this.getClass().getResourceAsStream(failName);// 方法2:獲取文件File file = org.springframework.util.ResourceUtils.getFile('classpath:test.txt');// 方法3:獲取文件或流ClassPathResource classPathResource = new ClassPathResource('test.txt');classPathResource .getFile();classPathResource .getInputStream();// >>>>>>>>>>>>>>>> 下面方法可以讀取jar包下文件假設(shè)resources目錄下有一個(gè)test.txt文件,首先獲得當(dāng)前的類加載器,通過類加載器讀取文件。// 方法1InputStream io = Thread.currentThread().getContextClassLoader().getResourceAsStream('test.txt');// 方法2InputStream io = getClass().getClassLoader().getResourceAsStream('test.txt');

注意:

Spring工具類會(huì)對(duì)classpath路徑做處理,類加載器不會(huì)對(duì)classpath做處理,因此使用類加載器讀取文件,路徑中不要添加classpath

SpringBoot項(xiàng)目打包成jar后獲取classpath下文件失敗

公司的一個(gè)SpringBoot項(xiàng)目中,有需要下載文件模板的需求,按理來(lái)說(shuō)分布式項(xiàng)目文件都應(yīng)該上傳到文件服務(wù)器,但是由于文件不是太多于是就放在了classpath下,在本地開發(fā)的時(shí)候發(fā)現(xiàn)都能正常下載文件,但是打包成jar上傳到Linxu測(cè)試環(huán)境上就報(bào)錯(cuò),找不到classpath路徑。

原因

原因是項(xiàng)目打包后Spring試圖訪問文件系統(tǒng)路徑,但無(wú)法訪問JAR包中的路徑。我們使用ResourceUtils.getFile('classpath:');這樣的方式是獲取不到路徑的。

解決方案

我們雖然不能直接獲取文件資源路徑,但是我們可以通過流的方式讀取資源,拿到輸入流過后我們就可以對(duì)其做操作了。關(guān)鍵代碼如下:

ClassPathResource resource = new ClassPathResource('staticpatterntest.txt'); // static/pattern下的 test.txt文件InputStream in = resource.getInputStream(); //獲取文件輸入流示例Demo

1. 在static下新建pattern目錄,并新建一個(gè)名為 test.txt的文件

SpringBoot 如何讀取classpath下的文件

2. 新建DownloadController.java

代碼如下:

package com.example.jekins.controller;import org.springframework.core.io.ClassPathResource;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;@RestControllerpublic class DownloadController { @GetMapping('/download/pattern') public void downloadPattern(HttpServletRequest request, HttpServletResponse response){System.out.println('開始下載文件.....');ClassPathResource resource = new ClassPathResource('staticpatterntest.txt');try {//獲取文件輸入流 InputStream in = resource.getInputStream(); //下載文件 downFile('test文件.txt',request,response,in);} catch (IOException e) { e.printStackTrace();} } /** * 下載文件 * @param fileName 下載文件名稱 * @param response 響應(yīng) * @throws IOException 異常 */ public static void downFile(String fileName,HttpServletRequest request,HttpServletResponse response,InputStream in) throws IOException {//輸出流自動(dòng)關(guān)閉,java1.7新特性try(OutputStream os = response.getOutputStream()) { fileName = URLEncoder.encode(fileName, 'UTF-8'); response.reset(); response.setHeader('Content-Disposition', 'attachment; filename=' + fileName); response.setContentType('application/octet-stream; charset=UTF-8'); byte[] b = new byte[in.available()]; in.read(b); os.write(b); os.flush();} catch (Exception e) { System.out.println('fileName=' + fileName); e.printStackTrace();} finally { if (in != null) {in.close(); }} }}

3. 測(cè)試 使用Maven工具把項(xiàng)目打成jar包

SpringBoot 如何讀取classpath下的文件

在target下生成了jar包

SpringBoot 如何讀取classpath下的文件

進(jìn)入jar包所在的文件夾,按住shift并右擊,點(diǎn)擊在此處打開命令行窗口。輸入命令啟動(dòng)項(xiàng)目 java -jar 打包后的文件

SpringBoot 如何讀取classpath下的文件

我設(shè)置的端口是8086,瀏覽器地址欄輸入http://127.0.0.1:8086/download/pattern

此時(shí)我們可以卡看到test.txt文件下載成功

SpringBoot 如何讀取classpath下的文件

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品亚洲成人| 久久这里只有精品一区二区| 国产资源在线观看入口av| 欧美成人精品午夜一区二区| 国产精品一站二站| 国产精品v一区二区三区| 国产精品一区高清| 麻豆国产91在线播放| 国产一区二区色噜噜| 97国产精品| 色婷婷久久久| 99热精品在线观看| 一区二区精品| 国产日产一区| 国产精品久久久久久久久久妞妞 | 91成人在线| 国产福利资源一区| 高清av一区| 亚洲黑丝一区二区| 日韩一级精品| 日韩欧美中文字幕一区二区三区| 欧美一级久久| 久久中文字幕一区二区三区| а√天堂8资源中文在线| 久久精品国产大片免费观看| 99国产精品99久久久久久粉嫩| 色狠狠一区二区三区| 国产精品黄网站| 久久久久久一区二区| 伊人久久大香线蕉av超碰演员| 亚洲狼人精品一区二区三区| 久久av中文| 日韩精品看片| 亚洲精品少妇| 高清日韩欧美| 尤物在线精品| 国产亚洲欧美日韩在线观看一区二区 | 亚洲美洲欧洲综合国产一区| 亚洲精品视频一二三区| 精品视频在线一区二区在线| 亚洲成人精品| 日韩1区2区3区| 日本久久综合| 午夜在线视频一区二区区别| 国产精品免费99久久久| 亚洲一级少妇| 999在线观看精品免费不卡网站| 日韩成人午夜精品| av资源亚洲| 亚洲青青久久| 91日韩在线| 综合国产精品| 日韩成人免费| 亚洲一区二区日韩| 精品91福利视频| 麻豆亚洲精品| 精品国产中文字幕第一页| 婷婷综合社区| 久久久国产精品网站| 亚洲一区二区毛片| 97精品97| 国产欧美日韩一级| 欧美丝袜一区| 久久超碰99| 一级成人国产| 神马午夜久久| 久久久久亚洲精品中文字幕| 日韩视频二区| 国产激情久久| 日韩精品一级中文字幕精品视频免费观看 | 日本成人精品| 精品一区亚洲| 国产a亚洲精品| 日韩精品国产欧美| 偷拍欧美精品| 偷拍精品精品一区二区三区| 国产午夜久久av| 日本欧美在线看| 少妇精品导航| 久久精品国内一区二区三区| 亚洲1区在线| 国产二区精品| 蜜桃av在线播放| 国产欧美亚洲精品a| 在线看片日韩| 欧美日韩国产在线观看网站 | 亚洲乱码视频| 亚洲二区免费| 久久精品97| 免费欧美日韩| 午夜在线精品| 国产专区一区| 精品一区二区三区在线观看视频| 综合欧美精品| 国产99精品一区| 国产96在线亚洲| 国产精品扒开腿做爽爽爽软件| 亚洲精选久久| 久久亚洲欧洲| 国产农村妇女精品一二区| 激情综合亚洲| 欧美日韩精品一区二区视频| 日韩av福利| 天堂8中文在线最新版在线| 麻豆精品视频在线观看免费| 欧美日韩xxxx| 日韩av资源网| 日本中文字幕一区二区| 综合一区二区三区| 麻豆亚洲精品| 六月婷婷一区| 免费欧美在线视频| 欧美午夜不卡影院在线观看完整版免费| 色爱综合网欧美| 精品视频高潮| 欧美黄色一区二区| 国产精品a级| 国产精品.xx视频.xxtv| 国产精品久久乐| 麻豆久久一区| 国产69精品久久| 麻豆理论在线观看| 日韩精品dvd| 日韩三区免费| 亚洲成av人片一区二区密柚| 久久婷婷av| 欧美日韩激情| 噜噜噜久久亚洲精品国产品小说| 悠悠资源网久久精品| aa亚洲婷婷| 中文字幕亚洲影视| 日本aⅴ精品一区二区三区| 欧美视频二区| 欧美黑人做爰爽爽爽| 精品国产亚洲日本| 日本蜜桃在线观看视频| 99精品视频在线| 欧美日韩国产免费观看视频| 免费精品视频| 日本三级亚洲精品| 婷婷综合国产| 国产精品一区二区精品视频观看| 国产精品视频一区二区三区| 国产激情欧美| 日本综合字幕| 夜久久久久久| 少妇精品久久久一区二区| 国产精品一区二区三区www| 久久久免费人体| 日韩免费高清| 99视频+国产日韩欧美| 日韩一区二区三区免费视频| 国产乱码精品| 久久九九精品| 在线观看视频免费一区二区三区| 日韩成人av影视| 成人黄色av| 日韩午夜电影| 国产精品一区高清| 秋霞影视一区二区三区| 美女91精品| 国产精品日韩精品在线播放| 中文在线中文资源| 欧美日韩国产亚洲一区| 日韩精品视频中文字幕| 精品美女在线视频| 欧美在线网站| 国产日产精品_国产精品毛片 | 国产极品模特精品一二| 日韩中文影院| 蜜臀久久久久久久| 麻豆精品在线观看| 欧美女激情福利| 国产精品午夜av| 99久久亚洲精品| 日韩高清中文字幕一区| 中文字幕高清在线播放| 蜜桃视频在线观看一区二区| 麻豆一区二区三| 夜夜嗨一区二区| 精品五月天堂| 亚洲免费成人| 精品99在线| 日韩精品91亚洲二区在线观看| 日韩精品永久网址| 日本精品另类| 亚洲性色视频| 国产精品一区三区在线观看| 激情综合网站| 精品三级av| 亚洲精品看片| 日韩精品中文字幕第1页| 少妇精品久久久一区二区| 亚洲永久av| 国产视频一区二区在线播放| 国产综合欧美| 国产乱人伦丫前精品视频| 91成人精品视频| 精品精品99| 日本精品一区二区三区在线观看视频|