File
- File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径
- 这个路径可以是存在的,也允许是不存在的
构造方法
| 方法名称 | 说明 | 作用 |
|---|
| public File(String pathname) | 根据文件路径创建文件对象 | 把字符串表示的路径变成File对象 |
| public File(String parent, String child) | 根据父路径名字符串和子路径名字符串创建文件对象 | 把父级路径和子级路径进行拼接 |
| public File(File parent, String child) | 根据父路径对应文件对象和子路径名字符串创建文件对象 | 把父级路径和子级路径进行拼接 |
成员方法
判断
| 方法名称 | 说明 |
|---|
| public boolean isDirectory() | 判断此路径名表示的File是否为文件夹 |
| public boolean isFile() | 判断此路径名表示的File是否为文件 |
| public boolean exists() | 判断此路径名表示的File是否存在 |
获取
| 方法名称 | 说明 |
|---|
| public long length() | 返回文件的大小(字节数量) |
| public String getAbsolutePath() | 返回文件的绝对路径 |
| public String getPath() | 返回定义文件时使用的路径 |
| public String getName() | 返回文件的名称,带后缀 |
| public long lastModified() | 返回文件的最后修改时间(时间毫秒值) |
- length()方法细节
- 这个方法只能获取文件的大小,单位是字节
- 这个方法无法获取文件夹的大小
- 如果我们要获取文件夹的大小,需要将文件夹中的所有文件大小累加到一起
- getName()方法细节
- 如果是文件,返回文件名加后缀
- 如果是文件夹,返回文件夹名
创建
| 方法名称 | 说明 |
|---|
| public boolean creatNewFile() | 创建一个新的空的文件 |
| public boolean mkdir() | 创建单级文件夹 |
| public boolean mkdirs() | 创建多级文件夹 |
- creatNewFile()方法细节
- 如果当前路径表示的文件是不存在的,则创建成功,方法返回true
- 如果当前路径表示的文件是存在的,则创建失败,方法返回false
- 如果父级路径是不存在的,那么方法会有异常IOException
- creatNewFile()方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
- mkdir()方法细节
- windows中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
- mkdir()方法只能创建单级文件夹,无法创建多级文件夹
- mkdirs()方法细节
删除
| 方法名称 | 说明 |
|---|
| public boolean delete() | 删除文件、空文件夹 |
- delete()方法细节
- 如果删除的是文件,则直接删除,不走回收站
- 如果删除的是空文件夹,则直接删除,不走回收站
- 如果删除的是有内容的文件夹,则删除失败
获取
| 方法名称 | 说明 |
|---|
| public static File[] listRoots() | 列出可用的文件系统根(获取系统中所有的盘符) |
| public String[] list() | 获取当前该路径下所有内容 |
| public String[] list(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
| public File[] listFiles() | 获取当前该路径下所有内容,将所有内容放到数组中返回 |
| public File[] listFiles(FileFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
| public File[] listFiles(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
-
listFiles()方法细节
- 当调用者File表示的路径不存在时,返回null
- 当调用者File表示的路径是文件时,返回null
- 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
- 当调用者File表示的路径是一个由内容的文件夹时,将里面所有文件和文件夹的路径放到File数组中返回
- 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放到File数组中返回,包含隐藏文件
- 当调用者File表示的路径是需要有权限才能访问的文件夹时,返回null
-
文件夹过滤器:函数式接口
- accept方法的形参:依次表示文件夹里面每一个文件或者文件夹的路径
- 参数一:父级路径
- 参数二:子级路径
- 返回值:如果返回值为true,就表示当前路径保留,如果为false,表示当前路径舍弃不要
new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return false;
}
}
new FileFilter() {
@Override
public boolean accept(File pathname) {
return false;
}
}
查找电脑中的目标文件
public static void findAVI(){
File[] arr = File.listRoots();
for (File f : arr) {
findAVI(f);
}
}
public static void findAVI(File src) {
File[] files = src.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
String name = file.getName();
if (name.endswith(".avi")) {
System.out.println(name);
}
}
} else {
findAVI(file);
}
}
}
删除多级文件夹
public static void deleteDirs(File file) {
File[] flies = file.listFiles();
for (File f : files) {
if (f.isFile()) {
f.delete();
} else {
deleteDirs(f);
}
}
file.delete();
}
统计文件夹大小
public static long getLen(File src) {
long len = 0;
File[] files = src.listFiles();
for (File file : files) {
if (file.isFile) {
len += file.length();
} else {
len += getLen(file);
}
}
return
}