Andriod开发——数据存储及XML序列化的学习

序列化是将对象状态转换为可保持或传输的过程。在序列化对象时,需要使用XmlSerializer序列化器,可将I/O流中传输的对象变得像基本数据类型一样,实现传递的功能。序列化后的对象以XML的形式保存(类似于HTML里面的标签)。要将数据序列化,首先要做的是创建与该XML相对应的序列化器(XmlSerializer),然后将Person对象转换为XML文件。

XML序列化的实例代码如下:

XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(file, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
serializer.text("Vicky");
serializer.endTag(null, "name");
serializer.endDocument();

上述代码中,通过XmlSerializer对象可以设置XML文件的编码方式,然后向文件写入XML文件标志,也就是<?xml version="1.0" encoding="utf-8" standalone="yes"?>代码。通过serializer.startTag(null,"persons")创建根节点<persons>,通过serialiaer.text()向该节点写入数据,最后创建结束节点</persons>,当执行到serializer.endDocument()时,表示整个文档写入结束。

一般在存储对象的时候,需要注意存储方法(外部存储和内部存储)。

内部存储是指将应用程序中的数据以文件的形式存储到设备内部存储空间中。其他应用程序如果要访问本文件会收到限制,应用程序被卸载时文件也会随之被删除。通过Context提供的openFileOutput()方法和openFileInput()方法分别获取FileOutputStream对象和FileInputStream对象。用getFilesDir()获取app的内部存储空间,相当于应用在内部存储上的根目录。操作方法如下:

String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;
try{
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(string.getBytes());
outputStream.close();
} catch(Exception e) {
e.printStackTrace();
外部存储是指将文件存储到一些外围设备上,由于外围设备可能被移除,丢失或者是处于其他状态,因此在使用外围设备之前必须使用Environment.getExternalStorageState()方法来确认外围设备是否可用,当外围设备可用且具有读写权限时,就可以通过FileInputStream、FileOutputStream或者FileReader、FileWriter对象来读写外围设备中的文件。

在外围设备中存储数据的代码如下 所示:

String state = Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED)){ 
File SDpath = newFile(Environment.getExternalStoragePublicDirectory();
File file = new File(SDpath,"data.txt");
String data = "hello world";
FileOutputStream fos;
try{
fos = new FileOutputStream(file);
foe.write(data.getByte());
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值