利用IO创建手机通讯录
学习IO之后可以进行很多实际性的操作,像文件拷贝,可以从理论到实际,学的东西好像一下就可以触碰,不再单单是些枯燥的语法,算法。这样感觉学习java变得更加有趣。
言归正传,如何利用IO简单实现手机通讯录?
基础知识肯定要有:>JavaSE高级开发之JavaIO<
有了对IO的基础知识,那么接下来就着手做吧,首先,先得知道手机通讯录内部是个什么构造:
BEGIN:VCARD
VERSION:3.0
N;CHARSET=UTF-8:Jan
FN;CHARSET=UTF-8:Jan
TEL;TYPE=CELL:1333333333
END:VCARD
在通讯录文件中,每一个人的保存方式都是这样的一个单独的模块,BEGIN:VCARD
、VERSION:3.0
、END:VCARD
是格式控制,告诉手机这是一个数据模块,保存了一个完整的联系人。N;CHARSET=UTF-8:Jan FN;CHARSET=UTF-8:Jan
保存的是联系人姓名,TEL;TYPE=CELL:1333333333
里面保存了联系人手机号,这里面需要修改的内容仅仅是Jan
和1333333333
,其他的都是格式。
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("C:/Users/wrinkle/Desktop/content.vcf");//实例化File类对象
if( ! file.exists()) {//文件判断,没有则生成
file.createNewFile();
}
if(! file.getParentFile().exists()) {//路径判断,没有则创建
file.getParentFile().mkdirs();
}
Scanner scanner = new Scanner(System.in);//用Scanner类实例化输入,System.in从键盘读取数据
String n = new String();//接收名字
String num = new String();//接收手机号
System.out.println("Please input name:>");//提示信息
n = scanner.next();//接收名字
System.out.println("Please input num:>");//提示
num =scanner.next();//接收手机号
content(file, n, num);//生成通讯录的方法
scanner.close();//关闭Scanner
}
public static void content(File file,String n,String num) throws IOException {
//通讯录格式
// BEGIN:VCARD
// VERSION:3.0
// N;CHARSET=UTF-8:张三
// FN;CHARSET=UTF-8:张三
// TEL;TYPE=CELL:12345678910
// END:VCARD
String N = "N;CHARSET=UTF-8:";//必须加
N = N + n;//追加名字,其实用StingBuilder更好,不产生垃圾空间
String FN = "FN;CHARSET=UTF-8:";//必须加上
FN = FN +n;
String TEL = "TEL;TYPE=CELL:";
TEL = TEL + num;//追加手机号
OutputStream out = new FileOutputStream(file,true);//实现追加输出
PrintStream prin = new PrintStream(out, true,"UTF-8");
prin.println("BEGIN:VCARD");//按照格式打印出来
prin.println("VERSION:3.0");
prin.println(N);
prin.println(FN);
prin.println(TEL);
prin.println("END:VCARD");
out.close();
prin.close();//打印流也需要手动关闭
}
}
这样,一个简单手机通讯录生成器就写好了,发给手机测试一下。
手机接收
成功导入了哈,不过代码还有好多要优化的地方,比如电话号码输入是否是数字检测,以及重名重号检测,还有就是删、插、改的功能添加等。
Github源码>点我<