使用cardme从一个文件中读取多个vcards

时间:2012-04-08 17:57:51

标签: java vcard

有没有办法如何使用cardme从一个文件中读取多个vcards?根据示例显示here,似乎不可能。

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:2)

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

这是一个迭代Files数组的方法,其中每个文件可能有多个vcards,并将所有读取的VCard添加到List。

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;
} 

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

答案 2 :(得分:0)

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