特殊檔案更Java(properties、XML、JSON)
特殊檔案更Java(properties、XML、JSON)
上接Java檔案基礎:https://blog.csdn.net/biggerchong/article/details/82820567
6.7.1介紹
在C++與Java中配置檔案主要是XML與JSON,Eclipse中還包含自帶的properties屬性檔案,這種屬性檔案可以使用Eclipse的自帶的工具建立一種properties擴充套件的檔案,它的寫入和解析相對XML、JSON較為簡單。
properties:Eclipse自帶屬性檔案,利用Java程式碼很方便的讀取和設定;但是其可移植性弱,企業級配置檔案還是以XML為主流。
XML:用來配置使用者自定義或系統規定的設定資訊,可以實現通過更改配置中的資訊而更改程式中相應的變數配置卻不必更改程式程式碼。(可移植性強,XML庫很豐富)
JSON:是網路傳輸中的主要傳輸檔案方法,當然JSON跟伺服器自然就離不開了,可能這種概念最開始不會很深刻,當我接觸到Java Web開發時,意識到伺服器端與客戶端之間的互動時利用JSON檔案格式來傳輸的,這種傳輸格式非常有利於客戶端,利用AJAX函式庫可以直接讀取,這樣的頁面就不會卡頓了更加友好。
6.7.2 Properties屬性檔案(概述)
//取得properties檔案流 InputStream file=testProperties.class.getResourceAsStream("/config.properties"); proper.load(file); //將流載入到proper //當不存在Name關鍵字時,取預設值 //第二個引數是設定的預設值(可設可不設) String Name=proper.getProperty("Name","知飛翀"); String CSDN=proper.getProperty("CSDN"); String QQ=proper.getProperty("QQ");
6.7.3 XML詳解
Java中常用dom4j.jar包來實現對XML檔案的各種操作,這裡使用dom4j-1.6.1.jar包,它的幫助文件(https://dom4j.github.io/javadoc/1.6.1/)
XML格式:
<?xml version="1.0" encoding="UTF-8"?> <--! 必須頂格寫才有效 -->
<root>
<blog>知飛翀</blog>
<csdn>80</csdn>
<xxxx>你好</xxxx>
</root>
在MyEclipse中利用dom4j建立XML:
//建立Document(載入準備)
Document x_doc=DocumentHelper.createDocument();
//新增root根元素
Element doc_root=x_doc.addElement("root");
//新增子元素
Element doc_name=doc_root.addElement("name").addText("知飛翀");
Element doc_CSDN=doc_root.addElement("CSDN").addText("https://me.csdn.net/biggerchong");
//新增屬性
Element name_QQ=doc_name.addAttribute("QQ", "610254602");
//轉成XML字串
x_doc.setXMLEncoding("UTF-8");
//輸出到檔案
OutputFormat format= OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8"); //設定XML字元編碼
File file=new File("src/config.xml"); //設定相對路徑
try
{
XMLWriter writer=new XMLWriter(new FileOutputStream(file),format);
writer.write(x_doc);
writer.close();
System.out.println("config.xml檔案建立成功!");
}
catch (Exception e)
{
e.printStackTrace();
}
注:檔案路徑這裡用的是相對路徑,Document相當於是整個XML的總管,它是老大;root是老二;子元素是老小。
在MyEclipse中利用dom4j解析XML:
//從XML檔案中讀出
FileInputStream stream=new FileInputStream("src/config.xml");
SAXReader reader=new SAXReader(); //用來讀取檔案到Document
Document x_doc=reader.read(stream);
stream.close();
//取得根元素
Element doc_root=x_doc.getRootElement();
//從子元素中取值
//方法1
Element doc_name=doc_root.element("name");
String name=doc_name.getText();
//方法2
String CSDN= doc_root.elementText("CSDN");
//取得屬性
String QQ=doc_name.attributeValue("QQ");
注:引入dom4j自定義的SAXReader
6.7.4 JSON詳解
Java中與JSON有關的庫很多,但是使用方法大同小異,這裡我們在JSON官網(http://www.json.org/)中使用其中一個JSON-java的庫(官方API:http://stleary.github.io/JSON-java/index.html),在github上下載整個原始碼後就可直接新增到src中使用了,這裡我們將原始碼打包成json-org.jar包來使用更加方便。
JSON格式:
{
“name”: “翀哥”,
“phone”: “13277351070”
}
在MyEclipse中利用json-org建立json:
JSONObject jsonObject=new JSONObject( ); //建立JSONObject
//向JSONObject中新增資料(key--value)
jsonObject.put(“name”,name);
jsonObject.put(“phone”,phone);
String jsonStr=jsonObject.toString( ); //轉換為JSON字串傳輸給客戶端
在MyEclipse中利用json-org解析json:
//傳入jsonStr建立JSONObject
JSONObject jsonObject=new JSONObject(String jsonStr);
//從JSONObject中取出資料(key--value)
String name=jsonObject.getString(“name”);
String phone=jsonObject.getString(“phone”);
還有更多複雜的JSON格式:JSON中嵌入JSON、JSON Array等,都是按照基本方法來建立解析的。JSON中屬性沒有先後順序這一說,JSON與hashMap很相似。
全部特殊檔案jar包及原始碼上傳至github:https://github.com/SCAsMessi/JavaStudy/tree/master/CSDN/Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/specailFile
加油!騷年們。。。