夯实基础!!
字符流
不同的操作系统有不同的编码,处理不同的编码是一个大问题,但是,这些被编码的字符本质上都是一个一个的byte,其中,Java是双字节编码,也就是utf-16be
,而utf-8
中文为三字节,英文为一字节,gbk
中文为两字节,英文为一字节。
使用String
的getBytes
方法将其转换为byte数组,可以向其中添加一个参数,为想转换为的编码类型。
代码片段如下
如果是utf-8的情况
1 | String s = "慕课ABC"; |
输出如下
1 | e6 85 95 e8 af be 41 42 43 |
其中Integer.toHexString
是将整形数字转换为十六进制字符串,所以其中每一个都是由两个十六进制数组成的。可以看出,前两个中文有46/8=3字节,而后三位为42/8=1字节
如果把getBytes
中的参数分别改成gbk
,utf-16be
,自结果如下
1 | 慕 课 A B C |
将byte数组组装成String时也可以指定编码类型,但必须一一对应,否则会乱码,如下
1 | String s = "慕课ABC"; |
结果如下
1 | aU��ABC |
访问文件信息
Java为我们提供了java.io.File
类来对文件进行访问,但是仅仅是对文件信息的访问,比如文件名称,文件路径,文件类型,文件大小,类似于操作系统中的FCB。
使用如下语句初始化
1 | // 文件路径 |
一些常用api
1 | file.exists(); // 文件是否存在 |
可以运用这些工具写一个递归程序列出当前路径下的所有目录和文件
1 | package com.example; |
试一试
1 | javac com/example/PrintDirTree.java |
1 | -test |