cardme解析サイパンシステム通信録Symbain vcf
3076 ワード
public class vcfTest {
private VCardEngine vcardEngine = null;// vcf engine,used to parse vcf
public vcfTest() {
vcardEngine = new VCardEngine();// initialization engine
vcardEngine.setCompatibilityMode(CompatibilityMode.RFC2426);// rfc mode
}
public void readVcfDir(String fname) {
File dir = new File(fname);// read vcf dir
FilenameFilter ff = new FilenameFilter() {
public boolean accept(File d, String fn) {
if (fn.endsWith(".vcf"))
return true;
return false;
}
};// filer bad vcf out
File[] vcfs = dir.listFiles(ff);// get all vcfs from dir
for (int i = 0; i < vcfs.length; i++) {
readVcf(vcfs[i]);
}
}
public void readVcf(File vcf) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(vcf), "UTF-8"));
String temp = br.readLine();
String s = "";
int M, Y, D;
while (temp != null) {// read vcf into string s
if (temp.startsWith(" ") || temp.startsWith("="))
s = s + temp.trim();
else
s = s + "
" + temp.trim();
if (temp.trim().equals("END:VCARD")) {
break;
}
temp = br.readLine();
}
br.close();
VCard vcard = vcardEngine.parse(s);// parse vcf
String name = null;
if (vcard.getName() != null) {// get name
name = vcard.getName().getFamilyName().trim();
if (vcard.getName().hasGivenName())
name = name + " " + vcard.getName().getGivenName().trim();
}
// if (name == null || name.equals(""))
// name = vcf.getName().substring(0, vcf.getName().indexOf("."));
if (vcard.hasExtendedTypes()) {// get types starts with "X-"
Iterator<ExtendedFeature> extFeatures = vcard
.getExtendedTypes();
while (extFeatures.hasNext()) {
ExtendedFeature feature = extFeatures.next();
String featureName = feature.getExtensionName().trim();
String data = feature.getExtensionData().trim();
if (featureName.equalsIgnoreCase("X-BDAY")) {// birthday for
// example,etc.
String[] ymd = data.split("-");
if (ymd.length >= 3) {
Y = Integer.parseInt(ymd[0]);// year
M = Integer.parseInt(ymd[1]);// month
D = Integer.parseInt(ymd[2]);// day
}
}
}
}
System.out.println(name);// print names
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
public static void main(String[] args) {
new vcfTest().readVcfDir("C:\\Users\\Desktop\\1");// main function starts here
}
}