問題背景:讀取配置文件,但是讀到的目錄信息是中文亂碼的。
第一步:
參考代碼如上截圖,方法即:讀取jdbc配置,獲取了配置文件(jdbc.properties)地址,然后加載這個文件讀取配置信息,但是獲取的文件目錄的地址中文轉(zhuǎn)譯了。
第二步:
設(shè)置編碼格式為utf-8,查看重新獲取的地址是否可以加載:
ClassLoader classLoader = JdbcUtils.class.getclassLoader();
Url res = classloader.getResource(“jdbc.properties”);
String path = res.getPath();
Path = java.net.URLDecoder.decode(path,”utf-8”);
修改代碼設(shè)置文件的編碼方式如上后,發(fā)現(xiàn)這樣加載過后雖然不亂碼了,但是有兩個其他問題,第一:項目中含有“+”可能被空格替換了,第二:多了/out/production/的目錄結(jié)構(gòu)。
第三步:解決有‘+’的問題
String path = res.getPath();
path = java.net.URLDecoder.decode(res.getPath(),"utf-8"); //解決路徑包含中文的情況
String path2 = JDBCUtils.class.getResource("/").toURI().getPath();
這樣可以原樣保留‘+’號,但是還是未解決目錄中多增加的/out/production/的目錄結(jié)構(gòu)。
第四步:
獲取文件目錄的所有方式
(這里的代碼,可以去參考鏈接2里面復(fù)制)
當(dāng)前,我采用了第二種獲取項目路徑的方式。
第五步:
修改后的代碼為:
?代碼參考:
Properties pro = new Properties();//獲取src路徑下的文件的方式--->ClassLoader 類加載器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
File directory = new File("");
String courseFile1 = directory.getCanonicalPath();
String courseFile2 = courseFile1 + "\\src\\jdbc.properties";
System.out.println(courseFile2);
pro.load(new FileReader(courseFile2));
僅供初學(xué)者參考,因?yàn)轫椖恐薪o的demo無法運(yùn)行,所以修改了些。但是在實(shí)際項目中這么寫,還是有待商榷的。配置服務(wù)器的時候亂碼,等我我學(xué)到了再說。。。
2023.6.16補(bǔ)充:
我看使用InputStream也可以獲取,方法更簡單。
Properties pro = new Properties(); InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); pro.load(is); url = pro.getProperty("url"); user = pro.getProperty("user");
。。。。
備注:我想和學(xué)后臺和會后臺的交個朋友,有想加我的初學(xué)者私聊我哈。文章來源:http://www.zghlxwxcb.cn/news/detail-596721.html
參考閱讀;文章來源地址http://www.zghlxwxcb.cn/news/detail-596721.html
有中文“+”號的解決辦法:
java 讀取文件路徑空格、“+”和中文的處理_路徑上有+號_樂觀男孩的博客-CSDN博客
Java中獲取類加載路徑和項目根路徑的5種方法:
https://codeleading.com/article/6780158525/
到了這里,關(guān)于java中獲取配置文件路徑中含有中文,出現(xiàn)亂碼的情況解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!