有没有办法使用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/