「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」
1.1 File类概述和构造方法
- 包:
java.io.File - File:它是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真正存在的文件, 仅仅是一个路径名而已。 它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
- 构造方法:
| 方法名 | 说明 |
|---|---|
| public File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例 |
| public File(String parent,String child) | 从父路径名字符串和子路径名字符串创建新的File实例 |
| public File(File parent,String child) | 从父抽象路径名和子路径名字符串创建新的File实例 |
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//1,public File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File f1 = new File("E:\\test\\java.txt");
System.out.println(f1); //E:\test\java.txt
//2,public File(String parent,String child) 从父路径名字符串和子路径名字符串创建新的File实例
File f2 = new File("E:\\test","java.txt"); //E:\test\java.txt
//3,public File(File parent,String child) 从父抽象路径名和子路径名字符串创建新的File实例
File f3 = new File("E:\\test");
File f4 = new File(f3,"java.txt");
System.out.println(f4); //E:\test\java.txt
}
}
1.2 File类创建和删除方法
-
绝对路径和相对路径的区别
- 绝对路径::完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:
E:\\test\\java\\java.txt - 相对路径: 必须使用取自其他路径名的信息进行解释。例如:
test\\java.txt(test表示当前模块)
- 绝对路径::完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:
-
删除目录时的注意事项:如果一个目录中有内容(目录,文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录
| 方法名 | 说明 |
|---|---|
| public boolean createNewFile() | 当具有该名称的文件不存在时,创建一个新的空文件 |
| public boolean mkdir() | 创建此抽象路径命名的目录(只能创建一级目录) |
| public boolean mkdirs() | 创建多级目录(建议使用) |
| public boolean delete() | 删除此File表示的文件或目录(只能删除空目录) |
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
//需求1: 我要在E:\\test目录 下创建一个文件 java.txt
File f1 = new File("E:\\test\\java.txt");
//如果文件不存在,就创建,并返回true; 如果文件存在,就不创建,并返回false
//1,、public boolean createNewFile() 当具有该名称的文件不存在时,创建一个新的空文件
System.out.println(f1.createNewFile()); //true
//需求2:我要在E:\\test目录下创建一个 目录JavaSE
File f2 = new File("E:\\test\\JavaSE");
//2、public boolean mkdir() 创建此抽象路径命名的目录(只能创建一级目录)
//如果目录不存在,就创建,并返回true; 如果目录存在,就不创建,并返回false
System.out.println(f2.mkdir()); //true
//需求3:我要在E:\\test目录 下创建一个多级目录JavaWEB\\HTML
File f3 = new File("E:\\test\\JavaWEB\\HTML");
//3、public boolean mkdirs() 创建多级目录(建议使用)
//如果目录不存在,就创建,并返回true; 如果目录存在,就不创建,并返回false
//System.out.println(f3.mkdir()); //false;mkdir():无法创建多级目录
//4,public boolean mkdirs() 创建多级目录(建议使用)
System.out.println(f3.mkdirs()); //true
//需求4:删除java.txt文件
//5、public boolean delete() 删除此File表示的文件或目录(只能删除空目录)
System.out.println(f1.delete()); //true
//需要5:删除JavaSE
System.out.println(f2.delete()); //true
//需求6:先创建java文件,里面创建java.txt文件;并删除java目录
File f4 = new File("E:\\test\\java");
f4.mkdir();
File f5 = new File("E:\\test\\java\\java.txt");
f5.createNewFile();
System.out.println(f4.delete()); //false;只能删除空目录
}
}
1.3 File类判断和获取方法
| 方法名 | 说明 |
|---|---|
| public boolean isDirectory() [dəˈrektəri] | 判断此抽象路径名表示的File是否为目录 |
| public boolean isFile() | 判断此抽象路径名表示的File是否为文件 |
| public boolean exists() [ɪɡˈzɪsc] | 判断此抽象路径名表示的File是否存在 |
| public String getAbsolutePath() [ˈæbsəliːt] | 返回此抽象路径名的绝对路径名字符串 |
| public String getPath() | 将此抽象路径名转换为路径名字符串 |
| public String getName() | 返回由此抽象路径名表示的文件或目录的名称 |
| public String[] list() | 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组 |
| public File[ listFiles() | 返回此抽象路径名表示的目录中的文件和目录的File对象数组 |
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
//创建file对象
File f1 = new File("test\\java.txt");
// public boolean isDirectory() 判断此抽象路径名表示的File是否为目录
// public boolean isFile() 判断此抽象路径名表示的File是否为文件
// public boolean exists() 判断此抽象路径名表示的File是否存在
System.out.println(f1.isDirectory()); //false
System.out.println(f1.isFile()); //true
System.out.println(f1.exists()); //true
// public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串
// public String getPath() 将此抽象路径名转换为路径名字符串
// public String getName() 返回由此抽象路径名表示的文件或目录的名称
System.out.println(f1.getAbsoluteFile()); //E:\test\test\test\java.txt
System.out.println(f1.getPath()); //test\java.txt
System.out.println(f1.getName()); //java.txt
System.out.println("-----------");
// public String[] list() 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
File f2 = new File("E:\\test");
String[] strArray = f2.list();
for(String s:strArray) {
System.out.println(s);
/*java
java.txt
test*/
}
//public File[ listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组
File[] fileArray = f2.listFiles();
for(File file:fileArray ) {
/*System.out.println(file);
// E:\test\java
// E:\test\java.txt
// E:\test\test*/
if(file.isFile()) { //file对象可以调方法
System.out.println(file); //E:\test\java.txt
}
}
}
}