File是java.io.
包下的类 ,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。
File类只能对文件本身进行操作,不能读写文件里面存储的数据;IO流用于读写数据(可以读写文件,或网络中的数据)。
File
File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的。
File类对象的创建
构造器 |
说明 |
public File(String pathname) |
根据文件路径创建文件对象 |
public File(String parent, String child) |
根据父路径和子路径名字创建文件对象 |
public File(File parent, String child) |
根据父路径对应文件对象和子路径名字创建文件对象 |
绝对路径与相对路径
绝对路径是从盘符开始,相对路径默认到当前工程的目录寻找文件。
File提供的功能
判断文件类型、获取文件信息
方法名称 |
说明 |
public boolean exists() |
判断当前文件对象,对应的文件路径是否存在,存在返回true |
public boolean isFile() |
判断当前文件对象指代的是否是文件,是文件返回true,反之。 |
public boolean isDirectory() |
判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。 |
public String getName() |
获取文件的名称(包含后缀) |
public long length() |
获取文件的大小,返回字节个数 |
public long lastModified() |
获取文件的最后修改时间。 |
public String getPath() |
获取创建文件对象时,使用的路径 |
public String getAbsolutePath() |
获取绝对路径 |
创建和删除文件
方法名称 |
说明 |
public boolean createNewFile() |
创建一个新的空的文件 |
public boolean mkdir() |
只能创建一级文件夹 |
public boolean mkdirs() |
可以创建多级文件夹 |
方法名称 |
说明 |
public boolean delete() |
删除文件、空文件夹 |
// 创建对象代表不存在的文件路径
File f3 = new File("E:\\resource\\dlei01.txt");
System.out.println(f3.exists());// 判断是否存在
system.out.println(f3.createNewFile());// 把这个文件创建出来
delete删完不进回收站,只能删文件和空文件夹
遍历文件夹
方法名称 |
说明 |
public String[] list() |
获取当前目录下所有的“一级文件名称”到一个字符串数组中去返回 |
public File[] listFiles() |
获取当前目录下所有的“一级文件对象”到一个文件对象数组中去返回(重点) |
使用listFiles()
方法时的注意事项:
- 当主调是文件,或者路径不存在时,返回null。
- 当主调是空文件夹时,返回一个长度为0的数组。
- 当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回。
- 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件。
- 当主调是一个文件夹,但是没有权限访问该文件夹时,返回null。
public static void searchFile(File dir, String fileName) {// 1.判断极端情况if(dir == null || !dir.exists() || dir.isFile()){return; // 不搜索}// 2.获取目录下的所有一级文件或者文件夹对象File[] files = dir.listFiles();// 3.判断当前目录下是否存在一级文件对象,存在才可以遍历if(files != null && files.length > 0){// 4.遍历一级文件对象for(File file : files){// 5.判断当前一级文件对象是否是文件if(file.isFile()){// 6.判断文件名称是否和目标文件名称一致if(file.getName().equals(fileName)){System.out.println("找到目标文件:" + file.getAbsolutePath());}else {searchFile(file, fileName);}}}}
}
字符集
数据在底层的表示
- 标准ASCII字符集, 用8位表示,即一个字节存储一个字符,首位都是0。
- 中国使用GBK国标字符集,2万多个汉字等字符,一个中文字符编码成两个字节的形式存储。
- GBK兼容了ASCII字符集。汉字的第一个字节的第一位必须是1。
- UTF-8采取可变长编码方案,共分4个长度区,1字节,2字节,3字节,4字节。 英文、数字只占一个字节,汉字占3个字节。
UTF-8如何区别长度区
UTF-8编码方式(二进制) |
0XXXXXXX(ASCII码) |
110XXXXX 10XXXXXX |
1110XXXX 10XXXXXX 10XXXXXX |
11110XXX 10XXXXXX 10XXXXXX 10XXXXXX |
对字符进行编解码
编码:字符串编码为字节。
解码:字节解码为字符串。
String提供了如下编码方法 |
说明 |
byte[] getBytes() |
使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中 |
byte[] getBytes(String charsetName) |
使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中 |
String提供了如下解码方法 |
说明 |
String(byte[] bytes) |
通过使用平台的默认字符集解码指定的字节数组来构造新的 String |
String(byte[] bytes, String charsetName) |
通过指定的字符集解码指定的字节数组来构造新的 String |