解決JavaWeb讀取本地json文件以及亂碼的問題
最近在開發(fā)項(xiàng)目的時候遇到一個問題,在myecilpes上使用googlede gson讀取項(xiàng)目中的json文件成功,然后把項(xiàng)目發(fā)布到tomcat上再使用同樣的方法,會提示“系統(tǒng)找不到指定的路徑”
文件放在src/config/下
JsonParser parser = new JsonParser(); JsonObject object = (JsonObject) parser.parse(new FileReader("config/Test.json"));
在找了許多文章以后,發(fā)現(xiàn)問題應(yīng)該是,發(fā)布到服務(wù)器之后,讀取文件的相對路徑并不能尋找到文件,所以只能使用絕對路徑,找到在tomcat的 webapps下的項(xiàng)目Test
路徑是
D:\Program Files\Tomcat 8.0\webapps\Test\WEB-INF\classes\Test.json
修改讀取路徑之后可以讀取到j(luò)son文件,以下是通過單獨(dú)的Java類中獲得絕對路徑方法,因?yàn)槲募A中有空格,所以我把其中空格部分被改變的進(jìn)行替換
String path = JsonUtil.class.getClassLoader().getResource("/Test.json").getPath().replace("%20", " "); JsonParser parser = new JsonParser(); JsonObject object = (JsonObject) parser.parse(new FileReader(path ));
但是這樣讀取出來的內(nèi)容卻是亂碼的,原因可能是系統(tǒng)編碼格式和編譯器的編碼格式不一致,所以我改用流的方式讀取文件
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.List; import com.google.gson.JsonArray; import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; /** * @author LK */ public class JsonUtil { /** * 讀取本地json文件,獲取json格式字符串 * @return */ public static String getJsonString(){ String path = JsonUtil.class.getClassLoader().getResource("/Test.json").getPath().replace("%20", " "); File file = new File(path); try { FileReader fileReader = new FileReader(file); Reader reader = new InputStreamReader(new FileInputStream(file),"utf-8"); int ch = 0; StringBuffer sb = new StringBuffer(); while ((ch = reader.read()) != -1) { sb.append((char) ch); } fileReader.close(); reader.close(); String jsonString = sb.toString(); return jsonString; } catch (IOException e) { e.printStackTrace(); return null; } } }
然后再把獲取到的json格式的String進(jìn)行解析
String jsonString = JsonUtil.getJsonString(); JsonParser parser = new JsonParser(); JsonObject object = (JsonObject) parser.parse(jsonString);
這樣就可以獲取到正確的JsonObject
以上這篇解決JavaWeb讀取本地json文件以及亂碼的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Maven的國內(nèi)鏡像(快速解決jar下載過慢的問題)
下面小編就為大家?guī)硪黄狹aven的國內(nèi)鏡像(快速解決jar下載過慢的問題)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06IDEA上面搭建一個SpringBoot的web-mvc項(xiàng)目遇到的問題
這篇文章主要介紹了IDEA上面搭建一個SpringBoot的web-mvc項(xiàng)目遇到的問題小結(jié),需要的朋友可以參考下2017-04-04基于Redis分布式鎖Redisson及SpringBoot集成Redisson
這篇文章主要介紹了基于Redis分布式鎖Redisson及SpringBoot集成Redisson,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小小伙伴可以參考一下2022-09-09Maven 打包項(xiàng)目到私服 (deploy)的配置方法
這篇文章主要介紹了Maven 打包項(xiàng)目到私服 (deploy)的配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07java.lang.OutOfMemoryError: Metaspace異常解決的方法
這篇文章主要介紹了java.lang.OutOfMemoryError: Metaspace異常解決的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Java如何獲取數(shù)組和字符串的長度(length還是length())
這篇文章主要介紹了Java如何獲取數(shù)組和字符串的長度(length還是length()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12SpringCloud Gateway的熔斷限流配置實(shí)現(xiàn)方法
Spring Cloud Gateway支持通過配置熔斷和限流機(jī)制來保證服務(wù)的穩(wěn)定性和可用性,可通過Hystrix和Resilience4j兩種方式實(shí)現(xiàn)。Hystrix通過注解和配置文件實(shí)現(xiàn)熔斷限流,Resilience4j通過編程式配置實(shí)現(xiàn)2023-04-04