码迷,mamicode.com
首页 > 其他好文 > 详细

使用cardme读写VCard文件,实现批量导入导出电话簿

时间:2015-06-08 20:02:44      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:

首先下载jar包cardme。

http://sourceforge.net/projects/cardme/?source=navbar

cardme是基于java语言的操作vCard(后缀vcf)文件的开源项目。

在项目中有一个类net.sourceforge.cardme.engine.TestParser。是官方给的example。

先来梳理几个基本概念

VCardEngine:主要用于从字符、文件中格式化或读取VCard数据,并转换为VCard对象

VCardWriter:主要用户把VCard对象装换为字符,方便写入文件。很难理解的是没有VCardReader对象。而VCardEngine对象却做着VCardReader对象的事儿。

VCard:可以理解为名片。定义了名片的基本协议(接口)。

VCardImpl:名片的实现类。

VCardType:名片的数据。名片的数据都是有类型的比如电话TelType,名字NameType,地址AdrType


基本概念理解了。我们来看看如何使用这些API

第一个需求读取

会使用到VCardEngine类主要有如下API

parse:是一个方法,方法含义为:从一个文件(或字符)中读取(格式化)VCard对象。如果参数是一个数组,那么多久返回一个VCard对象数组

parseMultiple:也是一个重载方法。含义为从一个文件(或字符)中读取(格式化)多个VCard对象。

读取接口很简单。只要理解了上面的几个基本概念,就完全没有问题了。

第二个需求写入

TestParser中只是把VCard对象转换为了字符。并没有写入文件,也没有就VCardType做任何example。

VCardWriter writer = new VCardWriter(VCardVersion.V3_0, CompatibilityMode.RFC2426);//用户把VCard转换为字符

FileWriter fw = new FileWriter(new File("F:/tel/0.vcf"));//把VCard数据(字符)写入文件

VCardImpl vc = new VCardImpl();//创建一个名片

//设置名片名字(FNType)。Sets the FN type. This type must be set in the VCard and cannot be omitted, it can however be left with all empty values.文档说这个值必须设置,不能忽略。

vc.setFN(new FNType("张三");

//给名片添加一个电话号码。名片是可以有多个号码的

vc.addTel(new TelType("13888888888"));

writer.setVCard(vc);

String str = writer.buildVCardString();//把名片对象转化为字符

fw.append(str);//写入文件

fw.flush();

fw.close();

对于VCard重点在于理解其VCardType的含义。我的理解为名片上的数据,不同的数据对应不同的VCardType实现。



使用cardme读写VCard文件,实现批量导入导出电话簿

标签:

原文地址:http://my.oschina.net/u/1244507/blog/464255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!