使用卡梅从一个文件中读取多个电子名片



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

没有内置方法来执行此操作。可以逐行循环访问文件,直到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();
    }
}
我不知道

方法parseMultiple()是否比这篇文章更新,但这实际上可以通过我正在使用的versión(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;
} 

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

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

相关内容

最新更新