使用cardme读写VCard文件,实现批量导入导出电话簿
2015-06-08 00:00
453 查看
摘要: vCard 规范容许公开交换个人数据交换 (Personal Data Interchange PDI) 信息,在传统纸质商业名片可找到这些信息。规范定义电子名片(或叫vCard)的格式。
要实现批量导入导出电话簿,就要有一个统一的协议(vcard),很高兴的是目前几乎所有的通讯录软件都支持vcard批量导入导出电话簿功能呢
首先下载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实现。
要实现批量导入导出电话簿,就要有一个统一的协议(vcard),很高兴的是目前几乎所有的通讯录软件都支持vcard批量导入导出电话簿功能呢
首先下载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实现。
相关文章推荐
- asp.net生成和下载的vcard文件无法导入问题分析
- Android 导出.vcf格式通讯录方法
- Android如何导出VCard
- 手机电话本 csv 转vcf (vCard) 格式,最简单的方法!
- Android --- 取得电话簿信息,并保存为Vcard格式
- vcard书目录
- 【宏】解决vcard乱码&批量导入outlook
- iOS_二维码名片vCard
- 使用Cardme读取安卓IOS导出的vcf格式通讯录
- Android使用vcard文件的方法简单实例
- PHP代码实现防sql注入
- ORACLE中的异常处理
- Hive的使用
- hive优化之------控制hive任务中的map数和reduce数
- Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode
- Hadoop集群三种作业调度算法介绍
- 清除win下连接的linux的samba服务缓存
- 动态配置脚本实现之 flex,yacc应用
- Linux - dnsmasq - dns cache
- Linux: 使用screen管理你的远程会话