2012-04-08 21 views

回答

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(); 
    } 
} 
+0

非常感謝,工作! – robodasha 2012-04-11 10:26:45

2

我不知道如果方法parseMultiple()比這篇文章更新,但這實際上可能與我使用的版本(v0.3.3)。

下面是一個遍歷Files數組的方法,其中每個文件可能有多個vcards,並將所有讀取的VCards添加到列表中。

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修改版本提供了在它的教程在http://dma.pixel-act.com/#tutorialBox

相關問題