- 用IDEA寫程序時碰到了一個問題,讀取寫在常量類中的一個字符串時發生了錯誤
Error:(6, 8) java: 對於常量池來說, 字符串 "{"actualCapital":"",..." 的 UTF8 表示過長
網上查了一下,是這個字符串的大小超過了65535個字節,也就是64K。的確,我的這個字符串長度大概是94K,超過了64K。
2. 解決方法:把這個字符串從常量類中挪到properties文件中。
* 在resource下面新加一個json.properties文件,然後把大字符串寫到這個文件中
json=[大字符串]
- 但是這又引出了另外一個問題:中文字符在properties文件中讀取出來後變成了亂碼,網上找了很多方法,設置編碼解碼格式等,也沒有解決。後來終於找到了解決方法,就是把字符串粘貼進properties文件中前,先進行ASCII–>NATIVE轉碼,轉碼完成後寫進去,再從裏面讀出來,中文就正常了。轉碼有很多工具,這裏貼一個網站:
http://tool.chinaz.com/tools/native_ascii.aspx
勾選“不轉換字母和數字”,點擊ASCII轉NATIVE按鈕即可
4. 同時附上一個簡單的從properties中讀取數據的方法
/**
* 從指定的配置文件裏面根據指定的key讀取value
* @param propertiesPath 配置文件地址
* @param key key值
* @param defaultValue 如果該key沒有找到,則返回的默認值
* @return value值
*/
public static String readFromProperties(String propertiesPath, String key, String defaultValue) {
try {
Properties properties = new Properties();
InputStream in = GraphresysServiceImpl.class.getResourceAsStream(propertiesPath);
properties.load(in);
in.close();
if (properties.containsKey(key)) {
return properties.getProperty(key);
}
} catch (IOException e) {
e.printStackTrace();
}
return defaultValue;
}