文件保存
很多时候都用用到xml来保存一些文本文件
public static void smsBackup(Context context,String path) throws IllegalArgumentException, IllegalStateException, IOException{ ContentResolver resolver = context.getContentResolver(); /** * 要将一个文件保存成XML文件,则必须要生成一个XML文件用于保存这些内容。 * 要生成XML文件,则需要一个XML序列化器 */ XmlSerializer serializer = Xml.newSerializer(); File file = new File(path); FileOutputStream os = new FileOutputStream(file); serializer.setOutput(os, "utf-8"); serializer.startDocument("utf-8", true); serializer.startTag(null, "smss"); Uri uri = Uri.parse("content://sms"); Cursor cursor = resolver.query(uri, new String[]{"address","date","type","body"}, null, null, null); while (cursor.moveToNext()) { String address = cursor.getString(0); String date = cursor.getString(1); String type = cursor.getString(2); String body = cursor.getString(3); } cursor.close(); serializer.endTag(null, "smss"); serializer.endDocument(); }
- 先定义一个上下文的解析器。这里用的resolver.这个上下文的解析器遍历根据指定条件利用while循环遍历整个数据库中所有的内容;
- 遍历的条件有如下这些:
指定现在要去遍历的文本文件存放的路径;
Uri uri = Uri.parse("content://sms");
- 设定遍历的条件。这里遍历之后只要获取到的指定的这四个字段。
其他的选择田间现在一概不讨论。
定义一个xml的序列化器来装得到的数据。
XmlSerializer serializer = Xml.newSerializer();
- 得到的序列化器要对其输入的路径和编码方式进行设置。首先就是路径,在文件当中已经跟上下文一起传入了一个文件存入路径,用文件输入流的形式将其存入。
- 而后再设定文件的编码方式;
注意
- 序列化器的标签和文件都要开始和结束程度出现,并且前后呼应以保证文件格式不出错。