I wrote the program now and transfered all my contacts, if someone maybe facing a similar problem, ... so I just post the source code.
A single .vcf corresponds to a business card
Here is the program I wrote for my personal use to split a single big Contact.vcf to multiple contact files, here I used the contact name as the name of the new business card file. Thanks to java ... I did not spend much time on perl or python ...
import java.io.*;
import java.util.*;
public class splitter
{
public static void main(String[] args) throws Exception
{
FileReader fin = new FileReader(args[0]);
BufferedReader in = new BufferedReader(fin);
LinkedList<String> contactNames = new LinkedList<String>();
LinkedList<String> contactsList = new LinkedList<String>();
StringBuffer contact = null;
boolean hasName = false;
for(String sLine = in.readLine(); sLine != null; sLine = in.readLine())
{
if(sLine.startsWith("BEGIN:"))
{
contact = new StringBuffer();
hasName = false;
}
else if(sLine.startsWith("END:"))
{
contact.append(sLine + "\n");
if(hasName)
{
contactsList.add(contact.toString());
}
contact = null;
continue;
}
else if(sLine.startsWith("N:"))
{
String[] tokens = sLine.split(":");
if(tokens.length == 2)
{
hasName = true;
String[] names = tokens[1].split(";");
if(names.length >= 1)
{
contactNames.add(((names.length >= 2)?names[1]:"") + "_" + names[0]);
}
}
}
contact.append(sLine + "\n");
}
in.close();
fin.close();
Iterator<String> it = contactsList.iterator();
for(String contactName: contactNames)
{
System.out.println("ContactName:" + contactName);
String sFileName = contactName.replaceAll(" ", "_");
String sContact = it.next();
System.out.println(sContact);
FileWriter fw = new FileWriter(sFileName + ".vcf");
PrintWriter out = new PrintWriter(fw, true);
out.println(sContact);
out.close();
fw.close();
}
}
}
Thank you very much, I want to use the data in single vcf file and create XML file with the same data. This code will help me a lot and i will inform you about my progress
ReplyDeleteBrilliant - helped me out.
ReplyDeleteThanks.
S