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

转载自 使用cardme读写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实现。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core系列 :4 测试

2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The State of .Net Core Testing Today 就将各个开源测试库的目前进展进行了汇总。本文我们的目的是在…

java高效字符串首字母大小写转换

通过找到一个移动ASCII的方式来处理字符串首字母大小写的问题 我们都知道在ascii 码表中 a的ASCIII码值是65而A的ASCII码值是 97 两个之间的差值是 32,所以,如果我们需要把一个小写字母转化成大写字母,那么我们只需要把这个 char 字符的asci…

java面向对象高级分层实例_BaseDao

package bdqn.studentSys.Dao; /*** 数据库帮助类* author Administrator**/ import java.sql.*; public class BaseDao {Connection connnull;PreparedStatement psnull;ResultSet rsnull;//连接数据库public void getConnection(){try {Class.forName("com.microsoft.sq…

Myeclipse 创建web项目的一些基本操作

上面是tomcat的工作路径 什么是工作路径呢? 启动tomcat 就开始监听8080端口了 在浏览器数据url 请求web请求 就会显示出index.jsp 上篇博客中有讲到更改tomcat端口 但是在运行中的修改是不会生效的 必须停止 再重启 怎么引入jar包? 支持中文 这样…

Java制作VCARD

转载自 Java制作VCARD 简介: vCard是电子名片的文件格式标准。它一般附加在电子邮件之后,但也可以用于其它场合(如在互联网上相互交换)。vCard可包含的信息有:姓名、地址资讯、电话号码、URL,logo,相片等。——摘自维基百科https://zh.wikipedia.org/wiki/VCardvCard规范容许…

java反射机制的简单使用和优缺点

java反射机制的使用 一、反射是什么? JAVA反射机制是在运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取类信息以及动态调…

有关技术分享

有人说,如果你想掌握好一门技术,那么最好的方式就是去当老师,去教会别人这门技术。在教别人的过程中,你必须要去深入的了解这门技术的方方面面,同时还要思考怎么才能让别人理解。每一个做过的人都知道,这要…

不可重复 幻读

幻读和不可重复读的区别 2014年09月15日 20:51:27 阅读数:26195 MySQl MySql默认的隔离级别为Repeatable Read,因此只会出现幻读的情况。 幻读 事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测…

java生成验证码

转载自 java生成验证码 源码: package seed.lee.image;import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;import javax.imageio.ImageIO; …

ASP.NET Core 中文文档 第三章 原理(5)错误处理

原文:Error Handling作者:Steve Smith翻译:谢炀(Kiler)校对:高嵩(jack2gs)、何镇汐 当你的ASP.NET应用发生错误的时候, 你可以采用本文所述的各种方法来处理这些问题。 配置错误处理页面 你在 Startup 类的 Configure(…

java面向对象高级分层实例_接口类

package bdqn.studentSys.Dao;import java.util.List;import bdqn.studentSys.entity.Student;/*** 学生表的接口* author Administrator**/ public interface StudentDao {//查询所有的学生public List<Student> getAllStudent();//修改学生信息public int UpdateStuden…

杀死进程

-- 杀死进程端口 netstat -aon|findstr "8086" taskkill /PID 9160 /f

菜鸟学Java(六)——简单验证码生成(Java版)

转载自 菜鸟学Java&#xff08;六&#xff09;——简单验证码生成(Java版)验证码大家都知道&#xff0c;它的作用也不用我多说了吧。如果不太清楚请参见百度百科中的解释&#xff0c;一般验证码的生成就是随机产生字符&#xff08;数字、字母或者汉字等&#xff09;&#xff0…

对象集合中如何用对象的某个属性给对象排序?

这是在工作中遇到的一个问题。用到的持久层技术是mybatis-plus&#xff0c;它里面自带的条件对象wrapper&#xff0c;我们可以通过wrapper.orderByDesc()或者wrapper.orderByAsc()给我们list中的对象排序。 但是问题来了&#xff0c;如果公司在基于这个框架的基础上写了一个通用…

你知道C#中的Lambda表达式的演化过程吗

那得从很久很久以前说起了&#xff0c;记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂。 委托的使用 例一&#xff1a; 什么是委托&#xff1f; 个人理解&#xff1a;用来传递方法的类型。&#xff08;用来传递数字的类型有int、float、double&#xff0c;用…

拦截第三方快递物流 ,console控制台打印正常 ,浏览器显示正常 ,传至后台乱码

使用 apache.http. 可以解决 压缩的json文件 浏览器会自动解压但我们的后台不会package com.zjyouth.utils;import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.…

java面向对象高级分层实例_数据库操作类

package bdqn.studentSys.Dao.impl; /**** 学生表的数据库操作类*/ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import bdqn.studentSys.Dao.BaseDao; import bdqn.studentSys.Dao.StudentDao; import bdqn…

shiro-权限概述

一、什么是权限 权限管理&#xff0c;一般根据系统的安全设置或安全规则&#xff0c;用户可以且只能访问自己被授予的资源。只要有用户名和密码&#xff0c;就一定会存在权限。 二、权限分类 访问权限 作为一个使用者或是访问者&#xff0c;你能够被允许看到的那些资源。 数…

ASP.NET Core Kestrel 中使用 HTTPS (SSL)

在ASP.NET Core中&#xff0c;如果在Kestrel中想使用HTTPS对站点进行加密传输&#xff0c;可以按照如下方式 申请证书 这一步就不详细说了&#xff0c;有免费的和收费的&#xff0c;申请完成之后会给你一个*.pfx结尾的文件。 添加NuGet包 nuget中查找然后再程序中添加引用Micro…

idea

war 发布 war explord 开发