我們要想創(chuàng)建 xml 文件,首先必須知道xml文件的幾個(gè)屬性。
- 注: SD卡權(quán)限一定要加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- 布局文件沒什么,就一個(gè)Button控件

xml備份.jpg

文件備份.jpg
1.創(chuàng)建基類Smsinfo.java
public class Smsinfo {
private String id;
private String name;
private String qq;
private String time;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Smsinfo(String id, String name, String qq, String time) {
super();
this.id = id;
this.name = name;
this.qq = qq;
this.time = time;
}
public Smsinfo() {
}
}
2.創(chuàng)建備份MainActivity.java
public class MainActivity extends Activity implements OnClickListener{
private Button btn;
private List<Smsinfo> smslist = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iviview();
//通過一個(gè)集合來 存放 我們索要備份的數(shù)據(jù)
smslist = new ArrayList<Smsinfo>();
//寫一個(gè)隨機(jī)數(shù)
Random r = new Random();
//遍歷 得到 很多值
for(int i=0;i<10;i++){
smslist.add(new Smsinfo(i+"", "name"+i, r.nextInt(2)+1+"121212121", r.nextInt(2)+1+"0000000"));
}
}
private void iviview() {
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}
//利用序列化器
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
//創(chuàng)建一個(gè)新的序列化器
XmlSerializer serializer = Xml.newSerializer();
//創(chuàng)建一個(gè)新文件 保存到 sd卡的根目錄,SD卡權(quán)限不要忘記加
File file = new File(Environment.getExternalStorageDirectory(),"smsinfo.xml");
Log.e("--------MainActivity--------", "文件已經(jīng)創(chuàng)建 ");
//引入輸出流
FileOutputStream fileOutputStream;
try {
fileOutputStream = new FileOutputStream(file);
//指定那個(gè)文件 ,設(shè)置編碼方式
serializer.setOutput(fileOutputStream, "utf-8");
//設(shè)置 頭部 那個(gè)開始《》 標(biāo)簽
serializer.startDocument("utf-8", true);
//開始 的 節(jié)點(diǎn) 節(jié)點(diǎn)的設(shè)置不需要編碼方式
serializer.startTag(null, "Smss");
//接下來 我們遍歷 集合 得到值
for(Smsinfo s:smslist){
serializer.startTag(null, "Sms");
//attribute就是 和節(jié)點(diǎn)在同一行的那個(gè)屬性
serializer.attribute(null, "id", s.getId());
serializer.endTag(null, "Sms");
serializer.startTag(null, "name");
//text就是 輸入輸出的文本
serializer.text(s.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "qq");
serializer.text(s.getQq());
serializer.endTag(null, "qq");
serializer.startTag(null, "time");
serializer.text(s.getTime());
serializer.endTag(null, "time");
}
//結(jié)束的節(jié)點(diǎn)
serializer.endTag(null, "Smss");
//結(jié)束 的《》
serializer.endDocument();
//關(guān)閉輸出流
fileOutputStream.close();
Toast.makeText(this, "備份成功", 1).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "備份失敗", 1).show();
}
}
}