我们为什么需要File类?
在我们使用电脑的时候,我们所有的数据,都是通过"文件"来保存记录下来的。尽管文件的格式有许多不同种类,但它们都是文件。在Java的开发过程中,也常与文件打交道,这时候我们就需要使用Java提供的File类来操作文件。
关于读取/输出文件内容等,是I/O流的知识范围,请看后面关于I/O流的文章。本篇文章主要将File类作为常用类,介绍File类的常用方法。
常用构造器
实例化File类时,最常用的是使用传入文件路径的构造器,来创建。实例:
File file = new File("d:/a.txt");
File file = new File("d:\\a.txt"); // 路径中,写为 / 与 \\ 均可
相对路径与绝对路径
绝对路径,就是从盘符开始,一直到特定的目录或文件夹的完整路径。如:D:/a.txt
相对路径,是相对论与某一个路径的路径。在工程中,就是指相对工程根目录的路径,如直接:b.text。如果此时工程的路径为:E:\eclipse_workspace\Project1。那么这个相对路径的完整路径(绝对路径)为:
E:\eclipse_workspace\Project1\b.txt
常用方法
需要注意的是,File类既可以是文件,也可以是目录。
方法 | 说明 |
---|---|
boolean createNewFile() | 创建一个新文件 |
boolean delete() | 删除对应文件 |
boolean exists() | 判断File是否存在 |
boolean isDirectory() | 判断File是否是目录 |
boolean isFile() | 判断File是否是文件 |
long lastModified() | 返回File的最后修改时间 |
long length() | 返回File的大小 |
String getName() | 返回文件名 |
String getPath() | 返回文件相对路径 |
String getAbsolutePath() | 返回文件绝对路径 |
boolean mkdir() | 创建目录,如果中间某目录缺失,则失败 |
boolean mkdirs() | 创建目录,如果中间某目录缺失,则创建缺失目录 |
File[] listFiles() | 返回目录下所有文件及目录 |
常用类就是需要多使用,多用就能记住它的用法,来个应用实例合集:
public class Test {
public static void main(String[] args) throws IOException {
File file1 = new File("d:/a.txt"); //绝对路径
File file2 = new File("b.txt"); //没加盘符,为相对路径,则默认在工程根目录下
file2.createNewFile(); //创建一个新文件
System.out.println("File是否存在:"+file2.exists());
System.out.println("File是否是目录:"+file2.isDirectory());
System.out.println("File是否是文件:"+file2.isFile());
System.out.println("File最后修改时间:"+new Date(file2.lastModified()));
System.out.println("File的大小:"+file2.length());
System.out.println("File的文件名:"+file2.getName());
System.out.println("File的相对路径:"+file2.getPath());
System.out.println("File的绝对路径:"+file2.getAbsolutePath());
File file3 = new File("e:/java/file");
// boolean flag = file3.mkdir(); //只会创建最后节点的目录,前面的目录结构有一个不存在,则创建失败
boolean flag = file3.mkdirs();//前面目录结构中有一个不存在也没关系,会创建整个目录树
System.out.println("目录是否创建成功:"+flag);
System.out.println("新建目录是否存在:"+file3.exists()); // 对于目录,也可以使用和文件一样的方法来获取信息
System.out.println("新建目录是否是目录:"+file3.isDirectory());
System.out.println("新建目录是否是文件:"+file3.isFile());
System.out.println("新建目录最后修改时间:"+new Date(file3.lastModified()));
}
}
-------------------------------------------------------------------------
输出结果为:
File是否存在:true
File是否是目录:false
File是否是文件:true
File最后修改时间:Sun Mar 22 01:43:48 CST 2020
File的大小:0
File的文件名:b.txt
File的相对路径:b.txt
File的绝对路径:E:\eclipse_workspace\Project1\b.txt
目录是否创建成功:true
新建目录是否存在:true
新建目录是否是目录:true
新建目录是否是文件:false
新建目录最后修改时间:Sun Mar 22 01:43:48 CST 2020