解決JavaWeb讀取本地json文件以及亂碼的問題
最近在開發(fā)項目的時候遇到一個問題,在myecilpes上使用googlede gson讀取項目中的json文件成功,然后把項目發(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下的項目Test
路徑是
D:\Program Files\Tomcat 8.0\webapps\Test\WEB-INF\classes\Test.json
修改讀取路徑之后可以讀取到j(luò)son文件,以下是通過單獨的Java類中獲得絕對路徑方法,因為文件夾中有空格,所以我把其中空格部分被改變的進(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)文章
使用JDBC連接Mysql 8.0.11出現(xiàn)了各種錯誤的解決
這篇文章主要介紹了使用JDBC連接Mysql 8.0.11出現(xiàn)了各種錯誤的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Java中StringBuilder字符串類型的操作方法及API整理
Java中的StringBuffer類繼承于AbstractStringBuilder,用來創(chuàng)建非線程安全的字符串類型對象,下面即是對Java中StringBuilder字符串類型的操作方法及API整理2016-05-05
如何使用Idea搭建全注解式開發(fā)的SpringMVC項目
這篇文章主要介紹了如何使用Idea搭建全注解式開發(fā)的SpringMVC項目,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Springboot項目中運用vue+ElementUI+echarts前后端交互實現(xiàn)動態(tài)圓環(huán)圖(推薦)
今天給大家?guī)硪黄坛剃P(guān)于Springboot項目中運用vue+ElementUI+echarts前后端交互實現(xiàn)動態(tài)圓環(huán)圖的技能,包括環(huán)境配置及圓環(huán)圖前端后端實現(xiàn)代碼,感興趣的朋友一起看看吧2021-06-06
SpringBoot中的PropertySource原理詳解
這篇文章主要介紹了SpringBoot中的PropertySource原理詳解,PropertySource?是一個非常重要的概念,它允許您在應(yīng)用程序中定義屬性,并將這些屬性注入到?Spring?環(huán)境中,需要的朋友可以參考下2023-07-07
關(guān)于weblogic部署Java項目的包沖突問題的解決
這篇文章主要介紹了關(guān)于weblogic部署Java項目的包沖突問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

