1、文件的编码
public class EncodeDemo{
String s = "慕课ABC";
byte[] bytes1 = s.getBytes(); //字符串转换成byte数组
for(byte b : bytes1){
//把字节(转换成了int)以16进制的方式显示
System.out.println(Integer.toHexString(b & 0xff)+" "); //前24个0没用,只留下后八位
}
byte[] bytes2 = s.getBytes("gbk");
for(byte b : bytes2){
//gbk编码中文占用两个字节,英文占用一个字节
System.out.println(Integer.toHexString(b & 0xff)+" ");
}
byte[] bytes3 = s.getBytes("utf-8");
for(byte b : bytes3){
//utf-8编码中文占用三个字节,英文占用一个字节
System.out.println(Integer.toHexString(b & 0xff)+" ");
}
//java是双字节编码utf-16be
byte[] bytes4 = s.getBytes("utf-16be");
for(byte b : bytes4){
//utf-16be编码中文占用两个字节,英文占用两个字节
System.out.println(Integer.toHexString(b & 0xff)+" ");
}
//当你的字节序列某种编码时,这个时候想把字节序列变成字符串,也需要这种编码方式,否则会出现乱码
String str1 = new String(bytes4); //用项目默认编码
System.out.println(str1); //出现乱码
String str2 = new String(bytes4,"utf-16be"); //括号中要的字节数组,要和编码一致
System.out.println(str2; //正常显示
// 文本文件 就是字节序列,
//可以是任意编码的字节序列,
//如果我们在中文机器上直接创建文本文件,那么该文本文件 只认识 ANSI编码,直接粘贴过来的可以认识
//但是文本文件本身是可以放置任何编码的文件的
}
结果显示:
c4 bd bf ce 41 42 43
// 慕 课 A B C 中文两个字节,英文一个字节
2、File类的使用
java.io.File类用于表示文件(目录)
File类智能表示文件(目录)的信息(名称,大小等)不能用于文件内容的访问
File基本API的操作
public class FileDemo{
public static void main(String[] args){
File file = new File("e:\javaio");
// File file1 = new File("e:"+File.separator);
System.out.println(file.exists); //判断文件目录存不存在
if(!file.exists()){
file.mkdir(); // 创建一级目录(下面没有别的目录了)
file.mkdirs(); // 创建多级目录(下面还有有别的目录了)
}else{
file.delete(); //删除目录
}
//是否是一个目录
System.out.println(file.isDirectory());
//是否是一个文件
System.out.println(file.isFile());
File file2 = new File("e:"+File.separator + "新建.txt");
//File file2 = new File("e:","新建.txt"); //和上面的一样
//判断文件是否存在
if(!file2.exits())
file2.createNewFile(); //如果不存在可以这样直接创建,会有异常产生
//常用File对象的API
System.out.println(file); //打印的是file的目录,相当于file.toString();
System.out.println(file.getAbsolutePath()); //获取file的抽象路径
System.out.println(file.getName); //如果是文件打印的是文件名,如果是目录打印的是目录最后的名字
//得到父目录, file.getParent();返回的是String;
//String [] strs = new File().list(); //list()方法当用户列出当前目录下的子目录和文件,返回的是字符串数组,直接子的名称,不包含子目录下的内容
//File[] files = new File().listFiles(); //返回的是直接子目录(文件)的抽象
}
}