欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決JavaWeb讀取本地json文件以及亂碼的問題

 更新時間:2018年06月07日 09:38:07   作者:天涯邊的蝸牛  
今天小編就為大家分享一篇解決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)文章

  • java生成文件夾和文件的簡單示例分享

    java生成文件夾和文件的簡單示例分享

    這篇文章主要介紹了java生成文件夾和文件的簡單示例,需要的朋友可以參考下
    2014-04-04
  • 使用@slf4j找不到符號log的問題及解決

    使用@slf4j找不到符號log的問題及解決

    這篇文章主要介紹了使用@slf4j找不到符號log的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Maven的國內(nèi)鏡像(快速解決jar下載過慢的問題)

    Maven的國內(nèi)鏡像(快速解決jar下載過慢的問題)

    下面小編就為大家?guī)硪黄狹aven的國內(nèi)鏡像(快速解決jar下載過慢的問題)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • IDEA上面搭建一個SpringBoot的web-mvc項(xiàng)目遇到的問題

    IDEA上面搭建一個SpringBoot的web-mvc項(xiàng)目遇到的問題

    這篇文章主要介紹了IDEA上面搭建一個SpringBoot的web-mvc項(xiàng)目遇到的問題小結(jié),需要的朋友可以參考下
    2017-04-04
  • 基于Redis分布式鎖Redisson及SpringBoot集成Redisson

    基于Redis分布式鎖Redisson及SpringBoot集成Redisson

    這篇文章主要介紹了基于Redis分布式鎖Redisson及SpringBoot集成Redisson,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小小伙伴可以參考一下
    2022-09-09
  • Maven 打包項(xiàng)目到私服 (deploy)的配置方法

    Maven 打包項(xiàng)目到私服 (deploy)的配置方法

    這篇文章主要介紹了Maven 打包項(xiàng)目到私服 (deploy)的配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • java.lang.OutOfMemoryError: Metaspace異常解決的方法

    java.lang.OutOfMemoryError: Metaspace異常解決的方法

    這篇文章主要介紹了java.lang.OutOfMemoryError: Metaspace異常解決的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java如何獲取數(shù)組和字符串的長度(length還是length())

    Java如何獲取數(shù)組和字符串的長度(length還是length())

    這篇文章主要介紹了Java如何獲取數(shù)組和字符串的長度(length還是length()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java中的泛型詳解

    Java中的泛型詳解

    這篇文章主要介紹了Java中的泛型詳解,本文講解了泛型類或接口、從泛型類派生子類、偽泛型、類型通配符、通配符的上限、通配符的下限、擦除和轉(zhuǎn)換等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • SpringCloud Gateway的熔斷限流配置實(shí)現(xiàn)方法

    SpringCloud 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

最新評論