摘要:本地跑沒(méi)有一點(diǎn)問(wèn)題,一打成包,發(fā)到服務(wù)器上,就在下面的語(yǔ)句報(bào)錯(cuò)提示找不到文件。而對(duì)于包里的文件,則已經(jīng)是文件的內(nèi)部了,就已經(jīng)無(wú)能為力了。
Java的IO操作,一年也用不到一次,且每次用到都會(huì)有一堆問(wèn)題。
就Java路徑,用一次查一次。因?yàn)橛玫纳?,用完就忘?/p>
這次遇到一個(gè)奇葩問(wèn)題。本來(lái)是一個(gè)非常簡(jiǎn)單的Excel操作,讀取,填充數(shù)據(jù)。本地跑沒(méi)有一點(diǎn)問(wèn)題,一打成jar包,發(fā)到服務(wù)器上,就在下面的語(yǔ)句報(bào)錯(cuò):
this.sourceFileName = this.getClass().getResource("Book1.xls").toURI() .getPath();
提示 找不到文件。
那么我們看看什么是URI:
Web上可用的每種資源 -HTML文檔、圖像、視頻片段、程序等 - 由一個(gè)通用資源標(biāo)識(shí)符(Uniform Resource
Identifier, 簡(jiǎn)稱(chēng)"URI")進(jìn)行定位。
且根據(jù)規(guī)范,URI是這種形式地:協(xié)議名稱(chēng)://域名.根域名/目錄/文件名.后綴
如http://www.baidu.com/xxoo.html
那么我么利用上面的java語(yǔ)句獲得的是什么形式呢?
file://d:xx/xx/aa/bb.txt.
注意到?jīng)],利用這種形式,可以打開(kāi)如上形式的某個(gè)目錄文件下的文件。
而對(duì)于jar包里的文件,則已經(jīng)是文件的內(nèi)部了,就已經(jīng)無(wú)能為力了。
也就是如果用上面方法,可以打開(kāi)到.../xx/xx.jar,而沒(méi)法到.../xx/xx.jar/xx.txt了。
那對(duì)于jar里的文件是不是就沒(méi)法打開(kāi)了?肯定不是:
InputStream inputStream = this.getClass()getResourceAsStream("Book1.xls"));
就這么簡(jiǎn)單,jar包里的文件,我們是沒(méi)法以file形式讀取的,而只能以InputStram的形式讀取。
推薦幾篇博文吧:
http://mushiqianmeng.blog.51cto.com/3970029/833649
http://www.coderli.com/jar-classloader
http://blog.csdn.net/b_h_l/article/details/7767829
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/64073.html
摘要:,到現(xiàn)在為止一切都按部就班,執(zhí)行上面的命令正常運(yùn)行,讀取里面的文件,并輸出相應(yīng)的屬性。那么,如果我們想改變配置文件的內(nèi)容是否需要修改源文件里的然后重新打包成呢顯然這樣做太麻煩也不太合理,你可以在外面配置一個(gè)新的讓里的去讀取。 Java中經(jīng)常要用到各種配置文件xxx.properties來(lái)控制程序的運(yùn)行或進(jìn)行國(guó)際化等但是也常常遇到配置文件放置路徑找不到的問(wèn)題,這里以java.uitl.R...
摘要:接口類(lèi)三個(gè)具有代表性的實(shí)現(xiàn)類(lèi)通過(guò)的和,我們找到利用去解析路徑配置文件的路徑。上面可能講的有點(diǎn)繞,但卻是入口之一。根據(jù)路徑的特性,分別封裝為或?qū)ο?。另外用包里的做了?shí)驗(yàn),發(fā)現(xiàn)可以讀到包里的信息。則是包的根地方,如,用于公共配置文件。 接口類(lèi):org.springframework.core.io.Resource 三個(gè)具有代表性的實(shí)現(xiàn)類(lèi): org.springframework.we...
摘要:背景由于版權(quán)問(wèn)題,中央倉(cāng)庫(kù)缺少的驅(qū)動(dòng),這個(gè)給開(kāi)發(fā)帶來(lái)了很多不便利性。本文主要探討的就是第三個(gè)問(wèn)題,怎么把驅(qū)動(dòng)打到包里背景交代完畢,正文開(kāi)始。是的,如果你只是想在本地打一個(gè)包,這種方式簡(jiǎn)單方便。 背景 由于版權(quán)問(wèn)題,maven中央倉(cāng)庫(kù)缺少oracle jdbc的驅(qū)動(dòng),這個(gè)給開(kāi)發(fā)帶來(lái)了很多不便利性。也出現(xiàn)各種各樣的解決方案,基本就兩種思路: 將oracle驅(qū)動(dòng)安裝到本地倉(cāng)庫(kù),這個(gè)需要大家...
摘要:模塊系統(tǒng)的前身是項(xiàng)目。最初,該項(xiàng)目?jī)H僅是為設(shè)計(jì)實(shí)現(xiàn)一個(gè)模塊系統(tǒng)。隨著項(xiàng)目的不斷深入,平臺(tái)對(duì)標(biāo)準(zhǔn)模塊系統(tǒng)的呼求也日益增長(zhǎng),批準(zhǔn)該項(xiàng)目升級(jí)為平臺(tái)的一部分,也能服務(wù)于和平臺(tái)的需求。自定義的配置,僅包含一組指定的模塊及其所需的模塊。 我的博客 轉(zhuǎn)載請(qǐng)注明原創(chuàng)出處。 序 從Java 9開(kāi)始,在Java的世界里多了一個(gè)叫模塊(JSR376)的特性。模塊系統(tǒng)的前身是Jigsaw項(xiàng)目。最初,該項(xiàng)目?jī)H...
摘要:這個(gè)文件包含對(duì)對(duì)數(shù)據(jù)訪問(wèn)進(jìn)行封裝的所有類(lèi)。為等提供的一致的聲明式和編程式事務(wù)管理。 SSM 環(huán)境搭建 目錄創(chuàng)建 pom.xml SSM 逐層配置 一、目錄 1.1 src/main/java 目錄下的包(以下包要放在項(xiàng)目包下,如:com.imooc.項(xiàng)目名) entity: 存放實(shí)體類(lèi) web: 存放controller,相當(dāng)于Struts中的action service: 業(yè)務(wù)...
閱讀 4034·2021-07-28 18:10
閱讀 2665·2019-08-30 15:44
閱讀 1193·2019-08-30 14:07
閱讀 3557·2019-08-29 17:20
閱讀 1657·2019-08-26 18:35
閱讀 3623·2019-08-26 13:42
閱讀 1895·2019-08-26 11:58
閱讀 1683·2019-08-23 18:33