使用cardme读写VCard文件,实现批量导入导出电话簿
轉(zhuǎn)載自?使用cardme讀寫VCard文件,實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出電話簿
首先下載jar包c(diǎn)ardme。
http://sourceforge.net/projects/cardme/?source=navbar
cardme是基于java語言的操作vCard(后綴vcf)文件的開源項(xiàng)目。
在項(xiàng)目中有一個(gè)類net.sourceforge.cardme.engine.TestParser。是官方給的example。
先來梳理幾個(gè)基本概念
VCardEngine:主要用于從字符、文件中格式化或讀取VCard數(shù)據(jù),并轉(zhuǎn)換為VCard對象。
VCardWriter:主要用戶把VCard對象裝換為字符,方便寫入文件。很難理解的是沒有VCardReader對象。而VCardEngine對象卻做著VCardReader對象的事兒。
VCard:可以理解為名片。定義了名片的基本協(xié)議(接口)。
VCardImpl:名片的實(shí)現(xiàn)類。
VCardType:名片的數(shù)據(jù)。名片的數(shù)據(jù)都是有類型的比如電話TelType,名字NameType,地址AdrType
基本概念理解了。我們來看看如何使用這些API
第一個(gè)需求讀取
會(huì)使用到VCardEngine類主要有如下API
parse:是一個(gè)方法,方法含義為:從一個(gè)文件(或字符)中讀取(格式化)VCard對象。如果參數(shù)是一個(gè)數(shù)組,那么多久返回一個(gè)VCard對象數(shù)組
parseMultiple:也是一個(gè)重載方法。含義為從一個(gè)文件(或字符)中讀取(格式化)多個(gè)VCard對象。
讀取接口很簡單。只要理解了上面的幾個(gè)基本概念,就完全沒有問題了。
第二個(gè)需求寫入
在TestParser中只是把VCard對象轉(zhuǎn)換為了字符。并沒有寫入文件,也沒有就VCardType做任何example。
VCardWriter writer = new VCardWriter(VCardVersion.V3_0, CompatibilityMode.RFC2426);//用戶把VCard轉(zhuǎn)換為字符
FileWriter fw = new FileWriter(new File("F:/tel/0.vcf"));//把VCard數(shù)據(jù)(字符)寫入文件
VCardImpl vc = new VCardImpl();//創(chuàng)建一個(gè)名片
//設(shè)置名片名字(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.文檔說這個(gè)值必須設(shè)置,不能忽略。
vc.setFN(new FNType("張三");
//給名片添加一個(gè)電話號(hào)碼。名片是可以有多個(gè)號(hào)碼的
vc.addTel(new TelType("13888888888"));
writer.setVCard(vc);
String str = writer.buildVCardString();//把名片對象轉(zhuǎn)化為字符
fw.append(str);//寫入文件
fw.flush();
fw.close();
對于VCard重點(diǎn)在于理解其VCardType的含義。我的理解為名片上的數(shù)據(jù),不同的數(shù)據(jù)對應(yīng)不同的VCardType實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的使用cardme读写VCard文件,实现批量导入导出电话簿的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地板用英语怎么说 地板英语解释
- 下一篇: springmvc常用注解