使用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实现。

时间: 2024-10-11 10:28:04

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

使用CSVDE命令批量导入/导出AD用户

使用CSVDE命令批量导入/导出AD用户 CSVDE命令行工具可以将带有用户信息的CSV文件,批量导入/导出AD中. 导入的基本语法命令是这样的: csvde -i -f c:\filename.csv -k 输入以下命令查看具体参数: csvde /? 首先在Excel中设置好用户信息,然后将文件保存为csv格式. 在cmd中执行导入命令. 可以看到,导入成功.在AD中查看: 可以看到新增加的两个用户,但它们与其余三个不同,有个向下的箭头.这是因为CSVDE命令是无法导入密码的,所以导入的用户

PowerShell 批量导入/导出Active Directory

PowerShell 批量导入/导出Active Directory 最近因为公司要求,需要导入20个供应商.20个客户到AD域中,刚开始手动加入了2个供应商,2个客户.但是感觉费时费力.如果能够找到一个命令,批量导入AD该多好呀. 因为之前有师兄在AD方面留下的有文档,发现AD域用户导出的命令是这样的: csvde -f E:\20131015.csv -r "(objectClass=user)" -d "OU=XXX,DC=XXX,DC=com" -u 这里对

java实现文件批量导入导出实例(兼容xls,xlsx)

1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出.另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了. 2.POI使用详解 2.1 什么是Apache POI? Apache POI是Apache软件基金会的开放源码函式库,

SNF快速开发平台3.0之--asp.net mvc4 强大的导出和不需要上传文件的批量导入EXCEL

数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,但在Web上我们应该如何实现呢?本文主要介绍利用MVC4+EasyUI的特点,并结合文件上传控件,实现文件不需要上传到服务器上就可以马上进行处理并显示,然后确认后把数据写入数据库的过程. 我们知道,Web上对Excel的处理和Winform的有所差异,如果是在Web上处理,我们需要把Excel文档上传到服务器上,然后读取文件进行显示.但在SNF上确实实现了与Winform一样的不需要上传到服务器,而是

AD帐号批量导入导出

一.批量导入帐户 步骤及原理: 1.先用Excel表格做一个简单模版,将其保存为.csv格式! 2.再用For命令结合dsadd 来完成批量创建用户! 使用到的命令:(注:以下命令里参数为笔者做测试,别忘记修改!) for /f  "tokens=1,2,3,4,5 delims=," %a in (D:\USER1.csv) do dsadd user "cn=%c,ou=IT,dc=test,dc=com"  -samid %d -upn %d -ln %a -

报表开发之批量导入导出excel

在日常使用报表过程中,会有这样一种情况,你将Excel表分发给各个员工,员工填完后,统一整理成多个Excel,你需要将这些数据,用报表的填报功能,提交录入到数据库中,这样一来可避免到服务器机房录数据的繁琐步骤,但是无论是批量导入和还是导出Excel,这对诸多报表软件或称集成报表功能的系统来说都是不容易的. 解决Excel导入的性能问题,可以利用FineReport开发的op=excel_submit功能,来实现不预览报表即可对填报表导入Excel. 根据报表工程的使用方式不同,批量导入Excel

org.apache.poi3.1.7 Excle并发批量导入导出

org.apache.poi3.1.7 升级,需要修改设置方式: 1.org.apache.poi3.1.4 的设置单元格: XSSFCellStyle cellStyle = wb.createCellStyle();   cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中  cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直 org.apache.

postgresql备份恢复数据库和批量导入导出数据到文件方法

备份数据库:pg_dump -h localhost -U root demo02 > /home/arno/dumps/demo02.bak 恢复数据库:psql -h localhost -U root -d demo <  demo.bak 备份表:pg_dump -h localhost -U root demo02 -t books > /home/arno/dumps/books.bak 恢复表:psql -h localhost -U root -d demo -t boo

基于Spring MVC实现基于form表单上传Excel文件,批量导入数据

在pom.xml中引入: <!--处理2003 excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency> <!--处理2007 excel--> <dependency> <group