目录
前言
本文从以下三个个方面阐述 :①java.io.Flie类可以帮助我们完成哪些工作,②它的构造方法,③常用的方法有哪些。
一、File类概述
1. 它是文件和目录路径名的抽象表示,也就是说文件和目录是可以通过File类封装成对象的
2.但是对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存
在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
二、构造方法
方法名 | 说明 |
---|---|
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的 File实例 |
File(File parent, String child) | 从父抽象路径名和子路径名字符串创建新的 File实例 |
1. File(String pathname)
//使用单参的构造器
private static void method1() {
//路径名为文件
String path ="E:\\UsageTimes.txt";
//路径名为目录
String path ="E:\\homework";
File file = new File(path);
System.out.println(file);
}
注意:这里传入的路径名 可以是可以是文件,也可以是目录
2. File(String parent, String child)
//从父路径名字符串和子路径名字符串创建新的 File实例
private static void method2() {
String path1 = "E:\\";
String path2 = "UsageTimes.txt";
File file = new File(path1,path2);
System.out.println(file);
}
如果父路径为空则按照子路径名创建新的File实例,如果不为空则以父路径名表示目录,子路径名表示目录或者文件(可以理解为将父路径和子路径拼接为一个路径,以此来创建File实例)
3. File(File parent, String child)
//从父抽象路径名和子路径名字符串创建新的 File实例
private static void method3() {
File file1 = new File("E:\\");
String file2 = "UsageTimes.txt";
File file = new File(file1,file2);
System.out.println(file);
}
三、绝对路径和相对路径
-
绝对路径:是一个完整的路径,从盘符开始
-
相对路径:是一个简化的路径,相对当前项目下的路径
-
代码如下(示例):在这里我使用相对路径创建一个a.txt,代码执行后的结果是在当前项目的根目录下创建a.txt
四、 常用方法
1.File类创建功能
方法名 | 说明 |
---|---|
public boolean createNewFile() | 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件 |
public boolean mkdir() | 创建由此抽象路径名命名的目录 |
public boolean mkdirs() | 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录 |
File类可以创建:文件和目录
1. 文件【createNewFile】
代码如下(示例):当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新的空文件
//当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
private static void method1() throws IOException {
File file = new File("E\\UsageTimes.txt");
//不管调用者有没有后缀名都会创建相应的文件
boolean result = file.createNewFile();
System.out.println(result);
}
如果文件存在时,返回值将为false
2. 目录(这里创建也可以用第三种方法实现,所以基本不用)【mkdir】
使用方法和mkdirs相同,此处不再举例
3. 层级目录【mkdirs】
代码如下(示例):使用mkdirs方法既可以创建多级目录也可以创建单个目录
//使用mkdirs方法既可以创建多级目录也可以创建单个目录
private static void method2() {
File file = new File("E:\\aaa\\bbb\\ccc");
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);
}
2.File类删除功能
方法名 | 说明 |
---|---|
public boolean delete() | 删除由此抽象路径名表示的文件或目录 |
代码如下(示例):注意此处删除文件不走回收站,直接删除掉了。
private static void method1() {
//删除文件不走回收站
File file = new File("E\\UsageTimes.txt");
file.delete();
}
3.File类判断功能
方法名 | 说明 |
---|---|
public boolean isDirectory() | 测试此抽象路径名表示的File是否为目录 |
public boolean isFile() | 测试此抽象路径名表示的File是否为文件 |
public boolean exists() | 测试此抽象路径名表示的File是否存在 |
4.File类获取功能
方法名 | 说明 |
---|---|
public String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
public String getPath() | 将此抽象路径名转换为路径名字符串 |
public String getName() | 返回由此抽象路径名表示的文件或目录的名称 |
public File[] listFiles() | 返回此抽象路径名表示的目录中的文件和目录的File对象数组 |
这里要注意最后一个public File[] listFiles()方法。
以删除一个多级文件夹为例
分析:如果要删除一个文件夹必须要删掉里面的所有内容,这里要删除一个多级文件夹,只知道根目录,里面的内容不知道。
这里我们的思想是 先进入第一级目录,使用public File[] listFiles()方法获取到这一层的所有文件和目录,如果是文件直接删除,如果是目录则再进入...重复这样的操作直到没有获取不到文件和目录。最后再把根目录删除。
这里使用了递归的思想。
代码如下(示例):
public class Test2 {
//delete方法
//删除一个有文件的文件夹
//先删掉这个文件里的所有文件夹
//F:\src
public static void main(String[] args) {
File src = new File("F:\\src");
deleteDir(src);
}
private static void deleteDir(File src) {
//递归,方法在方法体中自己调用自己
//套路
//1. 进入 -- 得到src文件夹里面说有内容的File对象
File[] files = src.listFiles();
//2. 遍历 -- 因为我想得到src文件夹下面的的每一个文件和文件夹的File对象
for (File file : files) {
if (file.isFile()){
//3. 判断 -- 如果遍历到的file对象是一个文件,那么直接删除。
file.delete();
}else{
//4. 递归
deleteDir(file);
}
}
//最后再删除这个文件夹
src.delete();
}
}
总结
这里总结了File类的基本用法
如果有不足之处欢迎指正批评!如果有疑问欢迎留言,绝对第一时间回复!