File类概述
- File类在包java.io.File下、代表操作系统的文件对象(文件、文件夹)。
- File类提供了诸如:定位文件,获取文件本身的信息、删除文件、创建文件(文件夹)等功能。
- File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的。
File类创建对象
方法名称 | 说明 |
public File(String pathname) | 根据文件路径创建文件对象 |
public File(String parent,String child) | 从父路径名字符串和子路径名字符串创建文件对象 |
public File(File parent,string child) | 根据父路径对应文件对象和子路径名字符串创建文件对象 |
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//常见file对象(指定了文件的路径)
File file = new File("D:\\java_projects\\resources\\data.txt");
long size = file.length();
System.out.println(size);
//File创建文件支持相对路径,也支持绝对路径
File file1 = new File("D:\\java_projects\\resources\\yb.jpg");
System.out.println(file1.length());
//相对路径:一般定位模块中的文件。相对到工程下
File file2 = new File("file-io-app/src/data.txt");
System.out.println(file2.length());
//File创建对象,可以是文件也可以是文件夹
File file3 = new File("D:\\java_projects\\resources");
System.out.println(file3.exists());
}
}
File类的常用API
File类的判断文件类型、获取文件信息功能
方法名称 | 说明 |
public boolean isDirectory() | 测试此抽象路径名表示的File是否为文件夹 |
public boolean isFile() | 测试此抽象路径名表示的File是否为文件 |
public boolean exists() | 测试此抽象路径名表示的File是否存在 |
public String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
public String getPath() | 将此抽象路径名转换为路径名字符串 |
public String getName() | 返回由此抽象路径名表示的文件或文件夹的名称 |
public long lastModified() | 返回文件最后修改的时间毫秒值 |
import java.io.File;
import java.text.SimpleDateFormat;
public class FileDemo2 {
public static void main(String[] args) {
//绝对路径创建一个文件对象
File f1 = new File("D:\\java_projects\\resources\\yb.jpg");
//获取它的绝对路径
System.out.println(f1.getAbsolutePath());//D:\java_projects\resources\yb.jpg
//获取文件定义的时候使用的路径
System.out.println(f1.getPath());//D:\java_projects\resources\yb.jpg
//获取文件的名称带后缀
System.out.println(f1.getName());//yb.jpg
//获取文件的大小:字节个数
System.out.println(f1.length());//869916
//获取文件的最后修改时间
long time = f1.lastModified();
System.out.println("最后修改时间"+new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time));//最后修改时间2020/09/21 18:34:44
//判断文件是文件还是文件夹
System.out.println(f1.isFile());//true
System.out.println(f1.isDirectory());//false
}
}
File类创建文件的功能
方法名称 | 说明 |
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 只能创建一级文件夹 |
public boolean mkdirs() | 可以创建多级文件夹 |
File类删除文件的功能
方法名称 | 说明 |
public boolean delete() | 删除由此抽象路径名表示的文件或空文件夹 |
注意:delete方法直接删除不走回收站;如果删除的是一个文件,且文件没有被占用则直接删除。
import java.io.File;
import java.io.IOException;
public class FileDemo3 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:\\java_projects\\resources\\yb.jpg");
//创建新文件,创建成功返回true,反之false
System.out.println(f1.createNewFile());//false
File f2 = new File("D:\\java_projects\\resources\\d1.jpg");
System.out.println(f2.createNewFile());//true
//mkdir创建一级目录
File f3 = new File("D:\\java_projects\\resources\\aaa");
System.out.println(f3.mkdir());//true
//mkdirs创建多级目录
File f4 = new File("D:\\java_projects\\resources\\bbb\\ccc\\ddd");
System.out.println(f4.mkdirs());//true
//删除文件或者空文件夹
System.out.println(f2.delete());//true
//只能删除空文件夹,不能删除非空文件夹
File f5 = new File("D:\\java_projects\\resources");
System.out.println(f5.delete());//false
System.out.println(f3.delete());//true
}
}
File类的遍历功能
方法名称 | 说明 |
public String[ ] list() | 获取当前目录下所有的“一级文件名称”到一个字符串数组中去返回。 |
public File[] listFiles() (常用) | 获取当前目录下所有的“一级文件对象”到一个文件对象数组中去返回(重点) |
listFiles方法注意事项:
- 当调用者不存在时,返回null
- 当调用者是一个文件时,返回null
- 当调用者是一个空文件夹时,返回一个长度为0的数组
- 当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
- 当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容
- 当调用者是一个需要权限才能进入的文件夹时,返回null
import java.io.File;
import java.util.Arrays;
public class FileDemo4 {
public static void main(String[] args) {
//定位一个目录
File f1 = new File("D:\\java_projects\\resources");
String[] names = f1.list();
for(String name:names){
System.out.println(name);
}
//一级文件对象
//获取当前目录下所有的“一级文件对象”到一个文件对象数组中去返回
File[] files = f1.listFiles();
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
//注意事项
//当调用者不存在时,返回null
File dir = new File("D:/aaaaaaaa");
File[] files1 = dir.listFiles();
System.out.println(files1);//null
//当调用者是一个文件时,返回null
File dir2 = new File("D:\\java_projects\\resources\\yb.jpg");
File[] files2 = dir2.listFiles();
System.out.println(files2);//null
//当调用者是一个空文件夹时,返回一个长度为0的数组
File dir3 = new File("D:\\java_projects\\resources\\aa");
File[] files3 = dir3.listFiles();
System.out.println(Arrays.toString(files3));//[]
}
}