java 讀取文件路徑空格、"+"和中文的處理方法
有時(shí)候在java代碼中讀取文件,如果文件所在路徑包含空格、”+“號(hào)或者是中文的時(shí)候,由于這些特殊的字符會(huì)被進(jìn)行編碼轉(zhuǎn)譯,所以就會(huì)報(bào)沒有發(fā)現(xiàn)文件的錯(cuò)誤,那么遇到這種錯(cuò)誤,我們就要把編碼過后的路徑進(jìn)行解碼,這樣才能正確的找到文件。主要的解決方法有一下三種方法:
解決方法
1、替換法
比如文件路徑如果存在空格,那么會(huì)被轉(zhuǎn)譯成“%20”,那么就可以利用字符串替換,把“%20”傳化成空格,這樣就能正確的找到文件了。這是這種如此暴力,低級(jí)的處理方法,一般有經(jīng)驗(yàn)的開發(fā)人員都不會(huì)采用吧?
2、使用URLDecoder.decode(str,enc)進(jìn)行解碼
如果空格、中文被轉(zhuǎn)譯過后,可以使用URLDecoder.decode方法進(jìn)行解碼,但是這種方法對(duì)于路徑中包含“+”號(hào)并不能進(jìn)行正確解碼,因?yàn)閁RLDecoder.decode方法內(nèi)部如果發(fā)現(xiàn)是加號(hào),將會(huì)將其轉(zhuǎn)成空格:

3、萬(wàn)能方法,使用toURI().getPath()
toURI()會(huì)跟自己的規(guī)則對(duì)字符串進(jìn)行編碼,然后又能自動(dòng)解碼,所以不用自己去關(guān)心這些事情,可以自行看下它的源碼。
演示:
web項(xiàng)目部署在一個(gè)tomcat中,路徑為:”D:\Program Files\java\apache-tomcat-6.0.26”
1、字符串包含空格:

從截圖中可以看到,路徑存在的空格已經(jīng)被轉(zhuǎn)成“%20”,如果不對(duì)這包含空格的路徑進(jìn)行解碼,那么直接讀取文件是獲取不到的;如果使用了以上第二、第三種方法,則能正確獲取到文件。
2、路徑中包含“+”

從上圖可以看到,如果路徑中包含“+”號(hào),那么第二種方法就失效了,但是第三種方法還是有效。所以平時(shí)使用最好是使用第三種方法比較好。此外,以上介紹的方法,如果部署在linux下也是適用的。
以上這篇java 讀取文件路徑空格、"+"和中文的處理方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析
這篇文章主要介紹了單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
java 關(guān)鍵字static詳細(xì)介紹及如何使用
這篇文章主要介紹了java 關(guān)鍵字static詳細(xì)介紹及如何使用的相關(guān)資料,需要的朋友可以參考下2017-03-03
spring security實(shí)現(xiàn)下次自動(dòng)登錄功能過程解析
這篇文章主要介紹了spring security實(shí)現(xiàn)記住我下次自動(dòng)登錄功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
springcloud feign docker上無(wú)法通訊的問題及解決
這篇文章主要介紹了springcloud feign docker上無(wú)法通訊的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
java多線程消息隊(duì)列的實(shí)現(xiàn)代碼
本篇文章主要介紹了java多線程消息隊(duì)列的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-07-07
Java+Windows+ffmpeg實(shí)現(xiàn)視頻轉(zhuǎn)換功能
這篇文章主要為大家詳細(xì)介紹了Java+Windows+ffmpeg實(shí)現(xiàn)視頻轉(zhuǎn)換功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
SpringBoot操作Mongodb的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot操作Mongodb的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

