1. File
- 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件,例如D:\lyy\java.txt
- 相对路径:必须使用取自其他路径的信息进行解释,如lyy\java.txt
File:文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真正的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
package Java21;
import java.io.File;
public class demo1 {
public static void main(String[] args) {
//三种构造方法做了同样的事情,需要指向一个文件可以采用以下任意一种
File f1 = new File("D:\\lyy\\java.txt");
System.out.println(f1);
File f2 = new File("D:\\lyy","java.txt");
System.out.println(f2);
File f3 = new File("D:\\lyy");
File f4 = new File(f3,"java.txt");
System.out.println(f4);
}
}
1.1 File类创建功能
- createNewFile()方法创建文件,如果文件不存在就创建文件并返回true,如果存在就不创建文件返回false
- mkdir()用于创建目录,该方法创建的目录的父类目录必须存在
- mkdirs()用于创建多级目录
package Java21.package1;
import java.io.File;
import java.io.IOException;
public class demo1 {
public static void main(String[] args) throws IOException {
//在D:\\lyyJava目录下创建java.txt文件
File f1 = new File("D:\\lyyJava\\java.txt");
System.out.println(f1.createNewFile());
//在D:\\lyyJava目录下创建一个目录javaSE,mkdir方法父类目录必须存在
File f2 = new File("D:\\lyyJava\\javaSE");
System.out.println(f2.mkdir());
//在D:\\lyyJava目录下创建一个多级目录javaSE\\HTML
File f3 = new File("D:\\lyyJava\\javaSE\\HTML");
// System.out.println(f3.mkdir());
System.out.println(f3.mkdirs());
//在D:\\lyyJava目录下创建一个javase.txt文件
File f4 = new File("D:\\lyyJava\\javase.txt");
System.out.println(f2.mkdir());//创建的不是文件而是创建一个名称为javase.txt的文件夹
}
}
1.2 File类判断和获取功能
package Java21;
import java.io.File;
public class demo2 {
public static void main(String[] args) {
//创建File对象
File f = new File("D:\\lyy");
// public boolean isDirectory():测试此抽象路径表示的File是否为目录
// public boolean isFile():测试此抽象路径表示的File是否为文件
// public boolean exists():测试此抽象路径表示的File是否存在
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.exists());
// public String getAbsoluteFile():返回此抽象路径名的绝对路径名字符串
// public String getPath():将此抽象路径名转化为路径名字符串
// public String getName():返回此抽象路径名表示的文件或目录的名称
System.out.println(f.getAbsoluteFile());
System.out.println(f.getPath());
System.out.println(f.getName());
System.out.println("-----------");
//public String[] list() 返回此抽象路径中的文件和目录名称的字符串
File f2 = new File("D:\\lyy\\src");
String[] stArray = f2.list();
for (String st:stArray){
System.out.println(st);
}
System.out.println("--------------");
//public File[] listFile() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件
File[] fileArray = f2.listFiles();
for(File file:fileArray){
System.out.println(file);
System.out.println(file.getName());
// if(file.isFile()){
// System.out.println(file.getName());
// }
}
}
}
1.2 File类删除功能
- public boolean delete() :删除由此抽象路径名表示的文件或目录
- 删除时的注意事项:如果一个目录中有内容,不能直接删除,应先删除目录中的内容,最后才能删除目录。
package Java21;
import java.io.File;
import java.io.IOException;
public class demo3 {
public static void main(String[] args) throws IOException {
//创建文件
File f1 = new File("D:\\lyy\\java.txt");
System.out.println(f1.createNewFile());
//删除文件
System.out.println(f1.delete());
//创建目录
File f2 = new File("D:\\lyy\\lyyss");
System.out.println(f2.mkdir());
//删除目录
System.out.println(f2.delete());
}
}
递归遍历目录
package Java21;
import java.io.File;
public class demo4 {
public static void main(String[] args) {
File src = new File("D:\\lyy\\src");
//调用方法
getallFile(src);
}
//递归遍历目录
public static void getallFile(File src){
//获取给定File目录下的所有文件或者目录的File数组
File[] fileArray = src.listFiles();
//遍历数组,得到每一个对象
if(fileArray != null){
for (File file:fileArray){
//判定File对象是否是目录
if(file.isDirectory()){
//是,调用递归
getallFile(file);
}else {
//不是,输出绝对路径
System.out.println(file.getAbsoluteFile());
}
}
}
}
}