IntelliJ IDEA處理.properties文件的亂碼問題!附帶簡單工廠模式的源碼
我看網站的代碼時,大多時先復制然後在研究代碼的,不染先看代碼最後缺少的文件了,也不知道在嗎弄對吧!說著說著這篇問斬確實缺少了寫文件,我這邊有直接添加了。
看看Init類裏面的要實例化init.properties文件,可是參考文章的作者沒有寫呀!所以我就自己添加了這個init.properties文件。
裏面寫什麽?又是一個值得思考的問題???我又對整體的代碼看一遍!最後這樣寫:
文件名:init.properties
輸入內容:
大眾=Case0000010.entity.DaZhong 寶馬=Case0000010.entity.BaoMa 奧迪=Case0000010.entity.AoDi
好了!萬事具備只差運行了!
點擊運行並且輸入:“寶”馬兩字就報錯了!
今天敲代碼不看黃歷??我只看我們的錯誤:
1、Factory類裏面的getInstance方法錯誤,位置在16行:
也就是實例化對象是錯誤的,所白了就carName的值是錯誤的。
在DemoThree4類裏面16、17行錯誤!
剛開始的時候我沒有懷疑過init.properties這個文件的。
我有通過DemoThree4文件。獲取到輸入的信息打印出來!輸入“寶馬”、再使用System.out.println(carName);輸出來:還是寶馬。如圖:
代碼代碼如下:
package Case0000010; import java.util.Properties; //引入屬性文件 import Case0000010.tools.Factory; //引入自定義的類 import Case0000010.tools.Operate; import Case0000010.entity.Car; import Case0000010.tools.Init; public class DemoThree4 { public static void main(String args[]) { Car car = null; String carName = Operate.getInput(); //取得用戶的輸入內容(此處沒有加數據的合法驗證) Properties pro = Init.getProperty(); //數理化Properties對象 String carName2 = pro.getProperty(carName); System.out.println(carName); //car = Factory.getInstance(pro.getProperty(carName)); //通過屬性文件取得實例化對象,並實例化Car對象 //car.printInfo(); //調用被實例對象覆寫的方法 //System.out.println(pro);//{???é??=Case0000010.entity.BaoMa, ?¤§???=Case0000010.entity.DaZhong, ?¥¥è?a=Case0000010.entity.AoDi} } }
既然這個沒有錯!那是不是反射錯呢??我有打印一下init.properties這個文件,再次修改DemoThree4文件!代碼如下:結果輸出如下圖:
package Case0000010; import java.util.Properties; //引入屬性文件 import Case0000010.tools.Factory; //引入自定義的類 import Case0000010.tools.Operate; import Case0000010.entity.Car; import Case0000010.tools.Init; public class DemoThree4 { public static void main(String args[]) { Car car = null; String carName = Operate.getInput(); //取得用戶的輸入內容(此處沒有加數據的合法驗證) Properties pro = Init.getProperty(); //數理化Properties對象 String carName2 = pro.getProperty(carName); //System.out.println(carName); //car = Factory.getInstance(pro.getProperty(carName)); //通過屬性文件取得實例化對象,並實例化Car對象 //car.printInfo(); //調用被實例對象覆寫的方法 System.out.println(pro);//{???é??=Case0000010.entity.BaoMa, ?¤§???=Case0000010.entity.DaZhong, ?¥¥è?a=Case0000010.entity.AoDi} } }
可以確認是init.properties的問題了,居然會亂碼!那就就是編碼的問題!我在查找處理方法的時候,測試過幾種方式就成功了,分享我測試成功的辦法!
進入到設置按照我的流程設置!
最後點擊Apply在點擊OK;
來再看我運行看看:
看看可以了吧!我在把DemoThree4的代碼修改回來再運行看看!
修改代碼如下代碼:運行了手動輸入寶馬按回車看看如下圖
package Case0000010; import java.util.Properties; //引入屬性文件 import Case0000010.tools.Factory; //引入自定義的類 import Case0000010.tools.Operate; import Case0000010.entity.Car; import Case0000010.tools.Init; public class DemoThree4 { public static void main(String args[]) { Car car = null; String carName = Operate.getInput(); //取得用戶的輸入內容(此處沒有加數據的合法驗證) Properties pro = Init.getProperty(); //數理化Properties對象 //String carName2 = pro.getProperty(carName); //System.out.println(carName); car = Factory.getInstance(pro.getProperty(carName)); //通過屬性文件取得實例化對象,並實例化Car對象 car.printInfo(); //調用被實例對象覆寫的方法 //System.out.println(pro);//{???é??=Case0000010.entity.BaoMa, ?¤§???=Case0000010.entity.DaZhong, ?¥¥è?a=Case0000010.entity.AoDi} } }
怎麽樣!是不是處理了亂碼的問題了??
什麽?這個辦法對你沒有用??
——如果我不是測試幾遍怎麽可能寫博客!我去追你孩子不行嗎?
——處理方式:把init.properties文件動一下(什麽叫動一下?移動?NO!進入到文件裏面,隨便修改個代碼保存,然後又撤銷回來。就好了)
什麽?這個辦法對你還是沒有用??
——小夥子你還年輕,一個問題處理方案不可能一找一個準的。你看看博主的回答吧!
如果想要這個簡單工廠模式的整個代碼請加入我的QQ群:315677448
IntelliJ IDEA處理.properties文件的亂碼問題!附帶簡單工廠模式的源碼