長期存儲數據,即把數據(如內存中的)保存到可永久保存的存儲設備中(如硬盤、U盤),也就是人們常說的持久化。
常用持久化的方案有數據庫、XML文件和文件存儲。
數據庫是按照數據結構來存儲和管理數據的倉庫,後文不再做詳細介紹。 XML是可擴展標記語言,最早是為了簡化Internet的文檔數據傳輸,它提供統壹的語法格式來描述數據的結構,通常XML文件用於壹些少量且無特殊類型要求的文本存儲。示例代碼使用W3C標準的接口生成XML:import?java.io.FileOutputStream;import?java.io.PrintWriter;
import?javax.xml.parsers.DocumentBuilderFactory;
import?javax.xml.transform.OutputKeys;
import?javax.xml.transform.Transformer;
import?javax.xml.transform.TransformerFactory;
import?javax.xml.transform.dom.DOMSource;
import?javax.xml.transform.stream.StreamResult;
import?org.w3c.dom.Document;
import?org.w3c.dom.Element;
public?class?$?{
public?static?void?main(String[]?args)?throws?Exception?{
Document?document?=?DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
//創建根節點為students的XML文件
Element?students?=?document.createElement("students");
document.appendChild(students);
//在根節點下創建壹個子節點學生
Element?student?=?document.createElement("student");
students.appendChild(student);
//創建節點學生姓名,值為張三
Element?name?=?document.createElement("name");
name.appendChild(document.createTextNode("張三"));
student.appendChild(name);
//創建節點學生年齡,值為18
Element?age?=?document.createElement("age");
age.appendChild(document.createTextNode("18"));
student.appendChild(age);
//創建節點學生編號,值為150101
Element?number?=?document.createElement("number");
number.appendChild(document.createTextNode("150101"));
student.appendChild(number);
//在根節點下創建第二個子節點學生
student?=?document.createElement("student");
students.appendChild(student);
//創建節點學生姓名,值為李四
name?=?document.createElement("name");
name.appendChild(document.createTextNode("李四"));
student.appendChild(name);
//創建節點學生年齡,值為20
age?=?document.createElement("age");
age.appendChild(document.createTextNode("20"));
student.appendChild(age);
//創建節點學生編號,值為150102
number?=?document.createElement("number");
number.appendChild(document.createTextNode("150102"));
student.appendChild(number);
//將XML文件保存到硬盤
Transformer?transformer?=?TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING,?"utf-8");
transformer.setOutputProperty(OutputKeys.INDENT,?"yes");
PrintWriter?writer?=?new?PrintWriter(new?FileOutputStream("/home/test.xml"));
transformer.transform(new?DOMSource(document),?new?StreamResult(writer));
}
} 無論是數據庫還是XML文件,它們都使用了能讓數據快速方便進出的標準規範。其它文件如propeties、json,都可以使用類似XML的方式來打包數據,然後通過Java豐富的io流接口保存到磁盤中。