您的位置:首页 > 移动开发 > Android开发

自己编写程序批量合并多个“规范定义电子名片(vCard)”文件

2010-08-03 18:59 525 查看
  上个周末遇到一个小问题,我希望把手机上的通讯录/联系人名单,从运行Windows CE 6.0系统的M8手机,转移到运行Google Android 2.2系统的M8手机上。对比了几套方法,感觉这个比较简单而且靠谱:先在PC上把通讯录导入Google Accounts,然后再同步到Android系统手机中。

  在运行Windows CE 6.0系统的M8手机中生成的是许多个vCard文件(*.vcf)(具体生成方法见文末),每个联系人单独一个文件。而Google Accounts只允许一次导入一个vCard文件,完全手工操作的话,几百个vCard文件要累死人不偿命的。嗨嗨,很明确的需求来了:把指定目录下的所有vCard文件(*.vcf),合并成一个vCard文件。

  先看看单个联系人的vCard(.vcf)内容:

BEGIN:VCARD
VERSION:2.1
N:张三;
TEL;CELL:13800008888
END:VCARD


  再看看多个联系人共用一个vCard(.vcf)的情况:

BEGIN:VCARD
VERSION:2.1
N:张三;
TEL;CELL:13800006666
END:VCARD

BEGIN:VCARD
VERSION:2.1
N:李四;
TEL;CELL:13800008888
END:VCARD

BEGIN:VCARD
VERSION:2.1
N:王五;
TEL;CELL:13800009999
END:VCARD

……………………


  可见,多个联系人共用一个vCard(.vcf),其文件内容是单人vCard(.vcf)文件内容的叠加(间隔以空行)。用程序实现起来非常之简单:枚举指定目录下的所有vCard(.vcf)文件,读取其内容,转换为文本叠加到一起,最后把合并后的内容写出到一个vCard(.vcf)文件即可。太简单了,我(liigo)用易语言,没两分钟就写完了:



  运行以上代码,就会在D盘根目录下生成合并后的vCard(.vcf)文件,将其往Google Accounts里面导入,很顺利地完成了,检查导入后的数据无误,证明vCard合并结果是正确的。

  程序源代码中,为什么把文件路径(“C:/Documents ...”,“d:/myVCards.vcf”)硬编码进去?呵呵,这可不是一个通用的程序,这是运行一次完成任务之后就要丢弃的代码。这种生存周期不足三分钟的程序源代码,弃之毫不足惜;如果将来又遇到类似的功能,随手再写一遍,也要快于从Windows文件管理器中翻出以前写好的旧代码。

  一个插曲,代码中用到了我多年前开发的一个易语言支持库,辅助调试支持库,想起来该库还不支持易语言5.x静态编译,于是升级之,支持静态编译,并更名为“枚举文件子目录支持库”(已开源)。

  小程序,也能帮大忙。

 

 

附:运行Windows CE 6.0系统的M8手机中生成vCard文件的方法:进入通讯录,点击任意联系人,用蓝牙发送,确定后即可在设备根目录(非Disk根目录)下tmpvcard子目录中看到临时自动生成的vCard文件(.vcf),每个联系人各自对应一个vCard文件。我(liigo)建议操作前清空tmpvcard目录,因为先前生成的vCard文件不会被自动删除。另参见此帖:http://bbs.meizu.com/viewthread.php?tid=1978771

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐