有没有办法如何使用cardme从一个文件中读取多个vcards?根据示例显示here,似乎不可能。
答案 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/