概述
- File类是文件和目录路径名的抽象表示形式
- java中把文件或者目录(文件夹)都封装成File对象
- 我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可
File类的静态成员变量
- pathSeparator:与系统有关的路径分隔符。。是一个分号,目录的分割(window中环境变量配置各个路径用分号分割,表示一个完整的路径结束) Linux中是冒号 :
- separator:与系统有关的默认名称分隔符向右 \ 目录名称分割 Linux /
File类的构造函数
- File(File parent ,String child) 根据parent抽象路径名和child路径名字符串创建一个新File实例
- File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
- File(String parent,String child)根据parent路径名字符串和child路径名字符串创建一个新File实例
File类的获取
返回值类型 | 方法名 | 说明 |
---|---|---|
String | getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
String | getName() | 返回由此抽象路径名表示的文或者目录的名称 |
String | getPath | 将此抽象路径名转换为一个路径名字符串 |
long | length() | 返回此抽象路径名表示的文件的长度 |
相对路径和绝对路径
- 相对路径:对于某个位置的路径
- 绝对路径:是一个固定的路径,从盘符开始
文件和文件夹的创建、删除
返回值 | 名称 | 说明 |
---|---|---|
boolean | createNewFile() | 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
boolean | delete() | 删除此抽象路径名表示地文件或者目录。不走回收站,直接从硬盘删除 |
boolean | exists() | 测试此抽象路径名表示的文件或者目录是否存在 |
boolean | isDirectory() | 测试此抽象路径名白哦是的文件是否是一个目录 |
boolean | isFile() | 测试此抽象路径名表示的文件是否是一个标准文件 |
boolean | mkdir() | 创建此抽象路径名指定的目录。创建多层文件夹 |
listFile()方法介绍
- String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
- File[] listFile()返回一个抽象路径名数组,这些路径名表示抽象路径名表示的目录中的文件
注意:
- 指定的目录必须时存在的
- 之抵挡的必须是目录。否则容易引发数组为null,初夏你空指针异常NullPointerException
文件过滤器
先把一个目录下的所有文件和文件夹获取到,并遍历当前获取到的所有内容,遍历过程中进行筛,listFiles方法可以接受指定的过滤器
- File[ ] listFiles(FilenameFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
FilenameFilter接口
返回值 | 方法 | 说明 |
---|---|---|
boolean | accept(File dir,String name) | 测试指定文件是否应该包含在某一文件列表中 |
demo1:
//定义类实现文件名称FilenameFilter过滤器
class MyFileFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
public static void main(String[] args) {
//获取扩展名为.java所有文件
//创建File对象
File file = new File("E:\\code\\day11_code");
//获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器
File[] files = file.listFiles(new MyFileFilter());
//遍历获取到的所有符合条件的文件
for (File f : files) {
System.out.println(f);
}
}
FileFilter接口
用于抽象路径名的过滤器
- boolean accept(File pathname)测试指定抽象路径名是否包含在某个路径名列表中
FilenameFilter过滤器中的accept方法接受两个参数,一个当前文件或文件夹所在的路径,一个是当前文件或文件夹对象的名称。
FileFilter 过滤器中的accept方法接受一个参数,这个参数就当前文件或文件夹对象当我们需要过滤文件名称时就可以使用FilenameFilter这个过滤器,当我们想对当前文件或文件夹进行过滤,就可以使用FileFilter ,比如需要当前目录下的所有文件夹,就可以使用FileFilter 过滤器。
//文件过滤器
class FileFileterByDir implements FileFilter{
public boolean accept(File pathname) {
return pathname.isDirectory();
}
}
public static void main(String[] args) {
//获取扩展名为.java所有文件
//创建File对象
File file = new File("E:\\code\\day11_code");
//获取指定目录下的文件夹
File[] files = file.listFiles(new FileFileterByDir());
//遍历获取到的所有符合条件的文件
for (File f : files) {
System.out.println(f);
}
}
文件过滤原理分析:
- listFiles()遍历目录的同时,获取到了文件名全路径,调用过滤器的方法accept,将获取到的路径传递给accept方法的参数pathname
- accept方法接收了参数pathname,参数是listFiles传递来的
- 在accept方法中,进行判断,如果这个路径是Java文件,返回true,走着返回false
- 一旦方法返回了true
- listFiles将路径保存到File数组中