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文件标志,也就是代码。通过serializer.startTag(null,"persons")创建根节点,通过serialiaer.text()向该节点写入数据,最后创建结束节点,当执行到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();
}
}











你可能感兴趣的:(Android)