import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// System.out.println(qpDecoding("=E8=81=94=E6=83=B3=E7=A7=BB=E5=8A=A8=E7=83=AD=E7=BA=BF"));
// System.out.println(qpEncodeing("联想移动热线"));
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read("WebRoot/phone.xml");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// List<Node> list =(List<Node>) doc.selectNodes("//newdingBackup/block/contact");
Element e = (Element) doc.selectSingleNode("//newdingBackup/block");
String name = "";
String tel = "";
List childnodes = e.elements();
String pix = "";
String text = "";
String encodeName = "";
for (int i = 0; i < childnodes.size(); i++) {
Element e1 = (Element) childnodes.get(i);
name = e1.valueOf("@LastName");
e1 = e1.element("mobilePhone");
if (e1 != null)
tel = e1.valueOf("@value");
String[] str = tel.split(" ");
tel = str[0];
if (i < 10) {
pix = "00" + i;
} else if (i < 100) {
pix = "0" + i;
} else {
pix = i + "";
}
FileWriter fw = new FileWriter("d:/phone/" + name + "_" + pix
+ ".vcf");//创建FileWriter对象,用来写入字符流
BufferedWriter bw = new BufferedWriter(fw);
text = "BEGIN:VCARD\nVERSION:2.1\nN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:";
encodeName = qpEncodeing(name);
text = text + encodeName;
text = text + "\nTEL;CELL:" + tel + "\nEND:VCARD";
bw.write(text);
bw.close();
fw.close();
}
System.out.println("ok");
}
/*
* 解码
*/
public static String qpDecoding(String str) {
if (str == null) {
return "";
}
try {
str = str.replaceAll("=\n", "");
byte[] bytes = str.getBytes("US-ASCII");
for (int i = 0; i < bytes.length; i++) {
byte b = bytes[i];
if (b != 95) {
bytes[i] = b;
} else {
bytes[i] = 32;
}
}
if (bytes == null) {
return "";
}
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
for (int i = 0; i < bytes.length; i++) {
int b = bytes[i];
if (b == '=') {
try {
int u = Character.digit((char) bytes[++i], 16);
int l = Character.digit((char) bytes[++i], 16);
if (u == -1 || l == -1) {
continue;
}
buffer.write((char) ((u << 4) + l));
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
} else {
buffer.write(b);
}
}
return new String(buffer.toByteArray(), "UTF-8");
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/*
* 编码
*/
public static String qpEncodeing(String str) {
char[] encode = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < encode.length; i++) {
if ((encode[i] >= '!') && (encode[i] <= '~') && (encode[i] != '=')
&& (encode[i] != '\n')) {
sb.append(encode[i]);
} else if (encode[i] == '=') {
sb.append("=3D");
} else if (encode[i] == '\n') {
sb.append("\n");
} else {
StringBuffer sbother = new StringBuffer();
sbother.append(encode[i]);
String ss = sbother.toString();
byte[] buf = null;
try {
buf = ss.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (buf.length == 3) {
for (int j = 0; j < 3; j++) {
String s16 = String
.valueOf(Integer.toHexString(buf[j]));
// 抽取中文字符16进制字节的后两位,也就是=E8等号后面的两位,
// 三个代表一个中文字符
char c16_6;
char c16_7;
if (s16.charAt(6) >= 97 && s16.charAt(6) <= 122) {
c16_6 = (char) (s16.charAt(6) - 32);
} else {
c16_6 = s16.charAt(6);
}
if (s16.charAt(7) >= 97 && s16.charAt(7) <= 122) {
c16_7 = (char) (s16.charAt(7) - 32);
} else {
c16_7 = s16.charAt(7);
}
sb.append("=" + c16_6 + c16_7);
}
}
}
}
return sb.toString();
}
}
分享到:
相关推荐
VCF(vCard)是一种标准格式,用于存储个人联系信息,如姓名、电话号码、电子邮件地址等。在C#中,生成VCF文件可以帮助你创建和管理这些联系人信息,并能在多个平台,如Android和Outlook,之间共享。本demo源代码...
VCF文件生成器是一款实用工具,专为需要将Excel中的联系人信息转化为VCF格式而设计。VCF,全称是vCard(虚拟名片)格式,是一种标准的电子名片交换格式,广泛应用于移动设备和电子邮件客户端,使得用户能够方便地...
一个PHP写的类,用来生成VCF文件,该生成的文件可以直接导入手机通讯录,非常好用。
"vcf文件生成器(excel转vcf)"是一个实用工具,它的主要功能是帮助用户将Excel表格中的联系人数据转换为VCF格式,以便于批量导入到各种通讯软件或设备中。这个工具可以显著提高处理大量联系人信息的效率,避免手动...
5. **批量生成**:为了批量生成VCF文件,程序可能提供了读取CSV或其他格式数据的功能,这样用户就可以一次性导入大量联系人信息并生成对应的VCF文件。 6. **错误处理**:良好的源码会包含适当的错误处理机制,例如...
2. 处理读取到的数据,根据VCF格式的要求组织联系人信息,例如,将A列的姓名、B列的电话号码等对应到VCF文件的字段。 3. 创建VCF文件,将处理好的数据写入文件。VCF文件的结构是文本的,因此可以使用StreamWriter类...
vcf文件生成器将EXCEL文件的通讯录转换成vcf文件,可以直接在android系统的手机通讯录导入。支持工作单位、职位、单位地址、网址、传真、家庭地址、qq号码的导入。 vcf文件生成器 v4.6更新日志: 1、增加了多选...
易语言VCF生成器源码,VCF生成器,生成vcf,取随机字母
VCF名片批量生成是一种高效管理个人联系信息的方式,尤其在商业环境中,当需要与大量人交换联系方式时,这种格式显得尤为实用。VCF,全称为“Virtual Contact File”,是一种标准的电子名片格式,广泛用于存储和交换...
VCF(vCard)文件是一种常见的电子名片格式,用于存储个人联系人信息,如姓名、电话号码、电子邮件地址等。在IT行业中,批量处理VCF文件对于管理大量联系人信息非常有用,尤其是在需要同步到各种设备或应用时。Excel...
CSV(Comma Separated Values)是一种通用的数据交换格式,简单且易于读写,适合包含联系人姓名、电话号码、电子邮件等信息的列表。VCF则如前所述,是联系人数据的标准格式。 在压缩包内的“VCF.exe”文件很可能是...
VCF到Excel的转换过程涉及到读取VCF文件中的各个字段,如姓名、电话号码、电子邮件地址等,并将这些信息导入到Excel表格中,形成结构化的数据。这使得用户可以利用Excel的公式、过滤和排序功能对联系人数据进行分析...
在IT行业中,CSV(Comma Separated Values)和VCF(vCard)是两种常见的文件格式,它们分别用于数据存储和联系人管理。本篇文章将深入探讨如何在Java环境中处理这两种格式,特别是如何使用Java来解析VCF文件,并将...
在IT领域,特别是在通信、移动设备以及联系人管理软件中,VCF(Virtual Card Format)是一种常见的文件格式,用于存储个人联系人的信息。这种格式允许用户轻松地在不同设备之间共享和转移联系人数据。本文将详细介绍...
VCF文件通常包含姓名、电话号码、电子邮件地址、公司信息等联系人细节,以特定的XML样式的键值对形式存储。在易语言中,我们需要解析或创建这些键值对,并将它们写入文件。 1. **易语言基础**: 易语言提供了丰富...
开发联系人管理功能时,有时需要从手机中批量读取联系人,联系人比较多的时候,性能问题就会凸显出来.为了方便测试,这里整理了1500条联系人数据,,欢迎下载.
这是一个轻量化的vcf名片生成工具,能将excel制作的表格轻松编码成手机支持的vcf格式,从而实现批量导入手机号码到通讯录。此版本只支持存储姓名与手机号码两个属性。
6. 完成后,用户可以在手机或其他设备上导入生成的VCF文件,将联系人信息添加到通讯录。 总的来说,这个工具解决了将大量联系人数据从Excel迁移到手机通讯录的问题,避免了手动输入的繁琐工作,提高了效率。对于...
XML与VCF格式的手机电话本转换工具,小巧方便实用,实在不可多得,分享一下下!记得给好评哟!
VCF(vCard Format)是一种常见的电子名片格式,用于存储个人联系信息,如姓名、电话号码、电子邮件地址等。在处理VCF文件时,尤其是在不同设备间导入导出时,可能会遇到乱码的问题,这通常是由于编码不兼容或格式...