使用cardme讀寫VCard文件,實現批量導入導出電話簿

首先下載jar包cardme。java

http://sourceforge.net/projects/cardme/?source=navbar 數組

cardme是基於java語言的操做vCard(後綴vcf)文件的開源項目。app

在項目中有一個類net.sourceforge.cardme.engine.TestParser。是官方給的example。ui

先來梳理幾個基本概念spa

VCardEngine:主要用於從字符、文件中格式化或讀取VCard數據,並轉換爲VCard對象.net

VCardWriter:主要用戶把VCard對象裝換爲字符,方便寫入文件。很難理解的是沒有VCardReader對象。而VCardEngine對象卻作着VCardReader對象的事兒。對象

VCard:能夠理解爲名片。定義了名片的基本協議(接口)。接口

VCardImpl:名片的實現類。ip

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實現。

相關文章
相關標籤/搜索