文档章节

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

黄途文
 黄途文
发布于 2015/06/08 17:42
字数 681
阅读 1555
收藏 10

首先下载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实现。



© 著作权归作者所有

共有 人打赏支持
黄途文
粉丝 3
博文 7
码字总数 4595
作品 0
成都
程序员
私信 提问
cardme 0.3.4_01 发布,VCard 的 Java 读写库

cardme 0.3.4_01 发布,这是一个小的 bug 修复版本,主要是处理了字符串的回车问题。 cardme 是 RFC 2426 的 Java 实现,可方便读写 VCard 文件格式。...

oschina
2012/06/28
560
0
cardme 0.4.0 发布,VCard 的 Java 开发包

cardme 0.4.0 的省略分号在构建扩展参数列表只有当没有以前附加参数和/或延长(类型)参数。 cardme 是 RFC 2426 的 Java 实现,可方便读写 VCard 文件格式。...

oschina
2013/04/03
601
0
cardme 0.3.2 发布,VCard 的 Java 读写库

cardme 是 RFC 2426 的 Java 实现,可方便读写 VCard 文件格式。 该版本修复了一些 bug : 1. fixes a reference error in the containsAllXXXParameterTypes() method where it should have......

红薯
2012/03/03
848
1
vcard的导入效率问题

自己做了个vcard程序用来对联系人导出导入,当联系人多的时候从vcard文件里面导入联系人就会非常慢,有没有研究android contact的高手说下 android源生代码是怎么样处理vcard导入的?...

an的haret
2013/10/21
81
0
Android Vcard使用心得

1.我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码。 vCard 规范容许公开交换个人数据交换(Personal Data Interchange PDI)信息,在传统纸质...

陈wei
2012/10/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

条形码设计软件BarTender实用教程——透明度样本标签

BarTender是一款优秀的标签、条形码、卡片以及RFID标签设计和打印软件。所有版本的BarTender都具有独立的设计和打印功能,对于更高级的用户,自动化版和企业自动化版本提供了更强大的集成功能...

ymy_666666
25分钟前
0
0
Sql--order by、desc降序、top

Sql--order by、desc降序、top ---------通过order by 语句进行排序: --1.降序order by 列名desc --2.升序order by 列名 或order by 列名asc --3.order by语句必须一定要放在整个sql语句的最...

linjin200
26分钟前
3
0
websocket wss所需的nginx配置以及解决golang作为服务端的跨域问题

下面的配置是微信小程序所需的wss的配置,这里为了方便,,也为了避免使用端口号,和原项目的配置写在一起了,因此使用了固定后缀/wss,以作区分,配置的重点就是location /wss 段,其之后的部分是原...

漫步海边小路
27分钟前
3
0
数字转换汉语中人民币的大写

最终结果输出:你输入的金额为:【123】 大写金额: [壹佰贰拾叁] 下面是实现代码: /** 6 * 数字转换为汉语中人民币的大写<br> 7 * 8 * @author Arvin 9 * @contact 94...

政旭Arvin
37分钟前
2
0
智能合约漏洞 -- 默认可见性修饰符

Solidity函数有visibility指定符,标明函数如何被允许访问。Visibility决定一个函数是否能被用户,被其他派生合约,从外部调用,仅从内部调用等等。有4个visibility指定符.函数默认的visibil...

怎当她临去时秋波那一转
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部