在哪里可以找到一个Java库来读取vcard文件?

12

我需要一个Java库来读取vcard文件(vcf)。


2
Stackoverflow是一个关于问题的网站。请将其改写成一个问题。尽管如此,这并不是一个真正的问题。 - guerda
8个回答

22

ez-vcard支持vCard标准的2.1、3.0和4.0版本,以及XML编码的vCard("xCard"标准)、HTML编码的vCard("hCard"微格式)和JSON编码的vCard("jCard"标准)。

https://github.com/mangstadt/ez-vcard

要读取vCard文件,请使用Ezvcard.parse()方法。然后,在返回的VCard对象上调用各种getter方法来检索vCard数据字段。

File file = new File("my-vcard.vcf");
VCard vcard = Ezvcard.parse(file).first();
System.out.println("Name: " + vcard.getFormattedName().getValue());
System.out.println("Email: " + vcard.getEmails().get(0).getValue());

嗨,看起来这是迄今为止最好的.vcf解析器,但是假设我有一个包含家庭邮件、工作邮件和其他邮件的.vcf文件。您能否请详细说明如何将不同类型的电子邮件(家庭、其他、工作)存储到字符串emailHome、emailWork、emailOther中?vcard.getEmails().get(0).getValue()始终返回第一个电子邮件,但如何知道它是家庭电子邮件、工作电子邮件还是其他电子邮件? - Marko Niciforovic
1
@Marko 在每个电子邮件对象上调用“getTypes()”方法以获取其“type”参数列表。然后,您可以检查其类型是否为“home”或“work”:email.getTypes().contains(EmailTypeParameter.HOME); - Michael
3
+1 指积极开发中。 - kommradHomer

8

搜索Java和vcard会得到相当多的结果。

特别是Mime-Dir-j,它已经不再处于活跃开发阶段,但可能是你所需要的,还有vcard4j,它似乎已经沉寂了更长时间(最后一次发布为2003年!)。


我已经找到了那些项目,希望能找到其他正在积极开发的项目,但无论如何我都会尝试它们,谢谢大家。 - Giorgio Gelardi
1
简单提醒一下,Mime-Dir-j似乎包含了vcard4j代码,但也应用了更近期的错误修复。 - Luke Quinane

8

Cardme 似乎是目前最好的 vcard 库,有着活跃的开发,并且甚至还有一个维基网站。

请查看该项目的主页


3


1

0

0

如果您想使用手机,JSR75可以直接实现:

javax.microedition.pim.PIM.fromSerialFormat被指定为支持vCard 3.0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接