itunes提供给设备备份的功能,不知道怎么备份的话可以戳一下这个看一下:http://jingyan.baidu.com/article/92255446ea8f46851648f4a4.html

  首先让我们来认识一下iphone的备份文件。备份完成之后,在资源管理器中输入%appdata%,然后进入\Apple Computer\MobileSync,是不是可以看到一个backup文件夹了?是的,这就是iphone备份文件啦。打开了看一下,里面会有各种文件,见图1

  

图1

  上面这些文件中,由40位字符组成的文件是一些数据库文件,待会儿下面我们要说的短信和联系人数据库就在其中。*.list文件是一些信息文件,打开Info.plist文件来看看其中的一些信息吧,见图2

  

                                    图2

  这是什么信息呢?Product Type表示手机设备,图上所示是iphone3,Product Version表示手机设备里的ios版本号,这些信息的用处在于读取数据库文件时可以针对不同的ios号、itunes号等信息做兼容工作,因为不同的ios版本,联系人、短信等数据库也会有相应的变化。

  Status.plist文件里面包含了一些诸如备份时间、是否为全量备份等信息的备份状态,见图3信息

  

图3

  接下来让我们进入本文第二部分,如何实现从备份数据库文件中读取短信和联系人信息。就在\Apple Computer\MobileSync中有两个文件要告诉大家,一个是“31bb7ba8914766d4ba40d6dfb6113c8b614be442”,另一个是“3d0d7e5fb2ce288813306e4d4636395e047a3d28”,他们分别是iphone、ipad等苹果设备的备份数据库文件,要打开它们可以借助一款第三方软件——SQLiteSpy,可以下载下来看看itunes到底帮亲备份了哪些东西。苹果对设备数据备份采用的是开源数据库产品——sqlite,要对这些数据库文件进行解析可以借助sqlite3的封装类,开源地址:http://sqlitewrapper.kompex-online.com/doxygen/dir_c1d6be483d10aafba59e40addb339565.html。利用这个开源库可以对里面的数据进行读取。分为几个步骤:1.初始化数据库,用开源sqlite3封装库里的类SQLiteDatabase的构造函数即可,Kompex::SQLiteDatabase* pDatabase =  new Kompex::SQLiteDatabase(WideToUTF8(strDBFilePath);, SQLITE_OPEN_READONLY, 0);2.利用刚刚获得的数据库指针构造一个sqlite语句指针以操作该数据库,用类SQLiteStatement的构造函数即可,std::auto_ptr<Kompex::SQLiteStatement> pStmt( new Kompex::SQLiteStatement(pDatabase) );。到了这一步你已经有了操作数据库的指针,接下来你要做的是构造一个短信的数据结构,然后通过语句指针读取每一条短信放进一个容器里面。至于得到的pStmt怎么用我就不公布代码了,自己可以写写,顺便练练手,在KompexSQLiteStatement.h中大概会有诸如这么一些接口是要用到的:

      inline void Sql(const std::string &sql) {Prepare(sql.c_str());}

      std::string GetColumnString(int column) const;

      int64 GetColumnInt64(int column) const;

      void FreeQuery();

配合接口注释,只要略懂数据库方面的知识用起来应该不难。

  

  

itunes备份文件解析入门的更多相关文章

  1. 用java实现一个简易编译器1-词法解析入门

    本文对应代码下载地址为: http://download.csdn.net/detail/tyler_download/9435103 视频地址: http://v.youku.com/v_show/ ...

  2. SpringBoot快速入门(解析+入门案例源码实现)

    这里写目录标题 SpringBoot入门 一.SpringBoot 概念 二.JavaConfig 入门 1. JavaConfig 概念 2. 项目准备 三.常用注解 四.SpringBoot 入门 ...

  3. javaweb入门20160305---xml的解析入门

    一个XML文件除了我们人去读写以外,我们希望可以通过程序去读写,利用程序去增删改查XML的过程就是XML编程 CRUD:Create.Read.Update.Delete   XML的两种解析方式 d ...

  4. xml解析方式之JAXP解析入门

    XML解析 1 引入 xml文件除了给开发者看,更多的情况使用[程序读取xml文件]的内容.这叫做xml解析 2 XML解析方式(原理不同) DOM解析 SAX解析 3 XML解析工具 DOM解析原理 ...

  5. dump解析入门-用VS解析dump文件进行排障

    突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...

  6. 用python做网页抓取与解析入门笔记[zz]

    (from http://chentingpc.me/article/?id=961) 事情的起因是,我做survey的时候搜到了这两本书:Computational Social Network A ...

  7. PHP模板解析入门

    学习:李炎恢PHP视频第二季 模板引擎的特点: 1.鼓励分离:让更个系统的可读性和维护性得到提高. 2.促进分工:使得程序员和美工去专心处理自己的设计. 3.比PHP更容易解析:编译文件和缓存文件加载 ...

  8. spring架构解析--入门一

    Spring 框架中的核心组件只有三个:Core.Context 和 Beans.它们构建起了整个 Spring 的骨骼架构.简单理解: spring core是工具,context是环境,而bean ...

  9. Linksys WRT120N路由器备份文件解析

    Perusing the release notes for the latest Linksys WRT120N firmware, one of the more interesting comm ...

随机推荐

  1. left join, right join , inner join, join, union的意义

    数据库在连接两张或以上的表来返回数据时,都会生成一张中间的临时表,然后再将临时表返回给用户left join,right join,inner join, join 与 on 配合用 select c ...

  2. PHP文件下载方式

    <?php// 不能是中文目录,其实如果是 .rar, .zip 类的这些文件,直接连接就可以下载了!function download($file_dir,$file_name)//参数说明: ...

  3. c#中创建类(更新中)

    类是最常见的一种引用类型,最简单的定义如下 class YouClassNam {} 复杂的类可能包含一下内容 类属性 类属性以及类修饰符.  非嵌套的类修饰符有:public,internal,ab ...

  4. PHP程序实现利用rand(1,100)函数产生10个1~100之间的随机数

    //echo rand(1,100);$max=0;$min=100;for($i=0;$i<=9;$i++){ $rand[$i]=rand(1,100); if($rand[$i]>$ ...

  5. Java 单链表的倒置

    在面试,笔试的过程中经常会遇到面试官问这种问题,实现单链表的倒置方法.现在对单链表的倒置犯法做个记录,方便自己以后查看. 单链表的定义: public class Node { int v; Node ...

  6. JavaScript高级之函数的四种调用形式

    主要内容 分析函数的四种调用形式 弄清楚函数中this的意义 明确构造函对象的过程 学会使用上下文调用函数 了解函数的调用过程有助于深入学习与分析JavaScript代码. 本文是JavaScript ...

  7. PHP获得文件的md5并检验是否被修改

    由于需要判断上传的文件是否被修改过,需要记录上传文件的md5值,所以这里说一下一下获取文件md5值的方法.   md5_file() md5_file() 函数计算文件的 MD5 散列.md5() 函 ...

  8. BZOJ 1715: [Usaco2006 Dec]Wormholes 虫洞

    Description John在他的农场中闲逛时发现了许多虫洞.虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前).John的每个农场有M条小路(无向边)连接着N ...

  9. 想学ps的,这全是精华,拿走不谢!!!

  10. Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解

    ListView就是列表组件,一般通过继承ListActivity使用系统提供的ListView. 所有的AdapterView组件都需要有一个对应的Adapter作为适配器来显示列表中元素的布局方式 ...