java 讀取文件路徑空格、"+"和中文的處理方法
有時候在java代碼中讀取文件,如果文件所在路徑包含空格、”+“號或者是中文的時候,由于這些特殊的字符會被進行編碼轉譯,所以就會報沒有發(fā)現文件的錯誤,那么遇到這種錯誤,我們就要把編碼過后的路徑進行解碼,這樣才能正確的找到文件。主要的解決方法有一下三種方法:
解決方法
1、替換法
比如文件路徑如果存在空格,那么會被轉譯成“%20”,那么就可以利用字符串替換,把“%20”傳化成空格,這樣就能正確的找到文件了。這是這種如此暴力,低級的處理方法,一般有經驗的開發(fā)人員都不會采用吧?
2、使用URLDecoder.decode(str,enc)進行解碼
如果空格、中文被轉譯過后,可以使用URLDecoder.decode方法進行解碼,但是這種方法對于路徑中包含“+”號并不能進行正確解碼,因為URLDecoder.decode方法內部如果發(fā)現是加號,將會將其轉成空格:
3、萬能方法,使用toURI().getPath()
toURI()會跟自己的規(guī)則對字符串進行編碼,然后又能自動解碼,所以不用自己去關心這些事情,可以自行看下它的源碼。
演示:
web項目部署在一個tomcat中,路徑為:”D:\Program Files\java\apache-tomcat-6.0.26”
1、字符串包含空格:
從截圖中可以看到,路徑存在的空格已經被轉成“%20”,如果不對這包含空格的路徑進行解碼,那么直接讀取文件是獲取不到的;如果使用了以上第二、第三種方法,則能正確獲取到文件。
2、路徑中包含“+”
從上圖可以看到,如果路徑中包含“+”號,那么第二種方法就失效了,但是第三種方法還是有效。所以平時使用最好是使用第三種方法比較好。此外,以上介紹的方法,如果部署在linux下也是適用的。
以上這篇java 讀取文件路徑空格、"+"和中文的處理方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringMVC的組件之HandlerExceptionResolver詳解
這篇文章主要介紹了SpringMVC的組件之HandlerExceptionResolver詳解,不管是在處理請求映射(HandlerMapping),還是在請求被處理(Handler)時拋出的異常,DispatcherServlet都會委托給HandlerExceptionResolver進行異常處理,該接口只有一個方法,需要的朋友可以參考下2023-10-10初探Spring Cloud Gateway實戰(zhàn)
這篇文章主要介紹了創(chuàng)建網關項目(Spring Cloud Gateway)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-08-08搜索一文入門ElasticSearch(節(jié)點 分片 CRUD 倒排索引 分詞)
這篇文章主要為大家介紹了搜索一文入門ElasticSearch(節(jié)點 分片 CRUD 倒排索引 分詞)的基礎詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03使用maven方式創(chuàng)建springboot項目的方式
使用Spring Initializr創(chuàng)建spring boot項目,因為外網問題導致很難成功,所以只能使用maven方式,這里介紹下使用maven方式創(chuàng)建springboot項目的方法,感興趣的朋友一起看看吧2022-09-09