0

有没有办法使用cardme从一个文件中读取多个vcard?根据此处显示的示例,这似乎是不可能的。

4

3 回答 3

2

我不知道 parseMultiple() 方法是否比这篇文章更新,但这实际上可以在我使用的版本(v0.3.3)中实现。

这是一个遍历 Files 数组的方法,其中每个文件可能有多个 vcard,并将所有读取的 VCard 添加到列表中。

public List<VCard> importVCards() {
    List<VCard> vcards = new ArrayList<VCard>();
    vcardFiles = getFiles();        
    for(int i = 0; i < vcardFiles.length; i++){
        try {               
            vcards.addAll(vcardEngine.parseMultiple(vcardFiles[i]));
        }
        catch(IOException ioe) {
            System.err.println("Could not read vcard file:
                "+vcardFiles[i].getAbsolutePath());
            ioe.printStackTrace();
        }
    }

    return vcards;
} 

卡梅可以在这里找到:https ://github.com/george-haddad/cardme

于 2012-06-26T07:29:03.667 回答
2

没有内置方法可以做到这一点。您可以逐行迭代文件,直到END:VCARD然后使用该方法VCardEngine.parse(String)逐个读取每个VCard。

像这样的东西可能会起作用:

BufferedReader buffer = new BufferedReader(new FileReader("allcards.txt"));

VCardEngine engine = new VCardEngine();
StringBuilder builder = new StringBuilder();
List<VCard> vcards = new ArrayList<VCard>();

String line;
while ((line = buffer.readLine()) != null) {
    builder.append(line);

    if (line.contains("END:VCARD")) {
        VCard vcard = engine.parse(builder.toString());
        vcards.add(vcard);
        builder = new StringBuilder();
    }
}
于 2012-04-08T19:08:44.340 回答
0

Cardme 版本 0.3.3 已发布,支持从 1 个文件解析多个 vcard。你可以在这里下载它http://sourceforge.net/projects/cardme/files/Cardme/Card%20Me%20Version%200.3.3/

于 2012-05-10T15:19:17.167 回答