1. 程式人生 > >IntelliJ IDEA處理.properties文件的亂碼問題!附帶簡單工廠模式的源碼

IntelliJ IDEA處理.properties文件的亂碼問題!附帶簡單工廠模式的源碼

properties IntelliJ

剛剛我在網絡上查找一個簡單工廠模式的demo時,看中了這篇文章:簡單工廠模式

我看網站的代碼時,大多時先復制然後在研究代碼的,不染先看代碼最後缺少的文件了,也不知道在嗎弄對吧!說著說著這篇問斬確實缺少了寫文件,我這邊有直接添加了。

技術分享圖片

看看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文件的亂碼問題!附帶簡單工廠模式的源碼