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. input file 模拟预览图片。

    首先申明,接下来内容只是单纯的预览图片,最多选择九张,并没有和后台交互,交互的话需要自己另外写js. 本来想写一个调用摄像头的demo,意外的发现input file 在手机端打开的话,ios可以调用 ...

  2. GPUImage 滤镜头文件

    #import "GLProgram.h" // Base classes #import "GPUImageOpenGLESContext.h" #impor ...

  3. C图书借还示例

    以后要搞C了先自己练习一下,系统本身没有太大的实际用途,只是用来磨练编程规范,不足之处还望大家多多指正 .互相交流共同进步. 为了方便只使用了一个 book.c 文件,在vc6 下编译通过,其他编译器 ...

  4. mvc4 membership, [Win32Exception (0x80004005): The system cannot find the file specified]

    public class UsersContext : DbContext { public UsersContext() : base("conn1") //change the ...

  5. Aircrack-ng官方文档翻译[中英对照]---Airmon-ng

    Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...

  6. bzoj 1200: [HNOI2005]木梳 DP

    1200: [HNOI2005]木梳 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 266  Solved: 125[Submit][Status] ...

  7. IAR ARM、IAR STM8、IAR MSP430共用一个IDE

    转自IAR ARM.IAR STM8.IAR MSP430共用一个IDE 试了安装好多个不同版本不同编译器的IAR,终于明白不同编译器的IAR共用IDE的条件,把几个不同编译器的IAR安装在一起,共用 ...

  8. PYTHON连MS SQL示例

    先要设置WINDOWS的系统DSN的.然后才可以哟. import pyodbc conxn = pyodbc.connect('DSN=BBB; DATABASE=Northwind;UID=AAA ...

  9. Android 系统功能设置菜单 LinearLayout与relativeLayout的实现

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  10. 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)

    Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...