1. 编码格式的说明
在开发中我们常遇到的编码格式有GBK,UTF-8,UTF-16be等等。在开发过程中我们需要注意的是:当你的字节序列是某种编码格式时,这个时候你想把字节序列转变成字符串,也需要使用同种编码格式,否则会出现乱码。这里要注意的是: 文本文件,就是字节序列,可以存放任意编码的字节序列,但是如果我们在中文机器上
直接创建文本文件,那么该文本文件只认识ansi编码。
1 String s = "天气55"; 2 byte[] bytes = s.getBytes("gbk"); 3 for(byte b:bytes){ 4 /*Integer.toHexString(b&0xff)int是32位,字节流是8位,转换成int时 5 就是在前面补24个0,但我们不需要前面这些0,所以与上0xff去掉这些0。*/ 6 System.out.print(Integer.toHexString(b&0xff)+" "); 7 } 8 System.out.println(); 9 byte[] bte1 = s.getBytes("utf-16be"); 10 for(byte bt:bte1){ 11 System.out.print(Integer.toHexString(bt&0xff)+" "); 12 } 13 System.out.println(); 14 // s.getBytes()转换成字节序列时用的是项目的默认编码, 15 // 我项目的默认编码是UTF-8格式 16 byte[] bte2 = s.getBytes(); 17 for(byte bt:bte2){ 18 System.out.print(Integer.toHexString(bt&0xff)+" "); 19 }
输出结果为:
由输出结果可以看出:我们输出同样的内容,但输出结果却不尽相同。GBK编码格式中,中文占两个字节,英文占一个字节;java是双字节编码(UTF-16be),中文占两个字节,英文占两个字节;UTF-8编码格式中,中文占三个字节,英文占一个字节。
2. java.io.File类
这个类表示文件或目录的信息(名称,大小),但不能访问文件内容。
在这里我们需要提一下,在创建File对象时,需要写文件路径的。但是路径的表示在Windows平台和Linux平台上它的表示方法是不一样的,在windows操作系统上,文件路径表示是双斜杠,其中一个斜杠表示转义字符,在Linux操作系统上,文件路径表示反斜杠,为了使java跨平台使用,java内部File类中定义了separator静态成员变量,使用时可以用File.separator使用或者采用静态导入的方法使用 import java.io.File.separator
2.1 File类中的方法
返回值类型 | 函数名 | 函数功能 |
boolean | createNewFile() | 当且仅当不存在此抽象路径名指定名称的文件时,不可分割地创建一个新的空文件 |
boolean | delete() | 删除文件 |
boolean | exists() | 判断文件是否存在 |
String | getPath() | 将此抽象路径名转换为一个路径名字符串 |
File | getAbsoluteFile() | 返回此抽象路径名的绝对路径名形式 |
String | getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
String | getParent() | 返回此抽象路径名的父目录路径名字符串,若不存在就返回null |
String[] | list() | 列出当前目录的子目录及文件 |
File[] | listFile() | 列出当前目录的子目录及文件的路径 |
boolean | mkdir() | 创建此抽象路径指定的目录 |
boolean | mkdirs() | 创建此抽象路径指定的目录,包括所有必需但不存在的父目录 |
boolean | isDirectory() | 判断是否是一个目录 |
boolean | isFile() | 判断是否是一个文件 |
2.2 方法实现
列出指定目录下的文件,包括子文件下的文件。(采用递归的方式实现该功能)
1 public static void listDirectoryFile(File file)throws IOException{ 2 if(!file.exists()){ 3 throw new IllegalArgumentException("文件夹不存在!"); 4 } 5 if(!file.isDirectory()){ 6 throw new IllegalArgumentException("不是目录!"); 7 } 8 File[] files = file.listFiles(); 9 if(files!=null&&files.length>0){ 10 for(File f:files){ 11 if(f.isDirectory()){ 12 listDirectoryFile(f); 13 }else{ 14 System.out.println(f.getAbsolutePath()); 15 } 16 } 17 } 18 } 19 public static void main(String[] args)throws Exception { 20 listDirectoryFile(new File("E:\\git")); 21 }