我们要想创建 xml 文件,首先必须知道xml文件的几个属性。
- 注: SD卡权限一定要加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- 布局文件没什么,就一个Button控件
1.创建基类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.创建备份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();
//通过一个集合来 存放 我们索要备份的数据
smslist = new ArrayList<Smsinfo>();
//写一个随机数
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) {
//创建一个新的序列化器
XmlSerializer serializer = Xml.newSerializer();
//创建一个新文件 保存到 sd卡的根目录,SD卡权限不要忘记加
File file = new File(Environment.getExternalStorageDirectory(),"smsinfo.xml");
Log.e("--------MainActivity--------", "文件已经创建 ");
//引入输出流
FileOutputStream fileOutputStream;
try {
fileOutputStream = new FileOutputStream(file);
//指定那个文件 ,设置编码方式
serializer.setOutput(fileOutputStream, "utf-8");
//设置 头部 那个开始《》 标签
serializer.startDocument("utf-8", true);
//开始 的 节点 节点的设置不需要编码方式
serializer.startTag(null, "Smss");
//接下来 我们遍历 集合 得到值
for(Smsinfo s:smslist){
serializer.startTag(null, "Sms");
//attribute就是 和节点在同一行的那个属性
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");
}
//结束的节点
serializer.endTag(null, "Smss");
//结束 的《》
serializer.endDocument();
//关闭输出流
fileOutputStream.close();
Toast.makeText(this, "备份成功", 1).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "备份失败", 1).show();
}
}
}