Java——File
一、File类概述
File是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的不是真正存在的文件,仅仅是一个路径名。它可以是存在的,也可以是不存在的,要通过具体的操作把这个路径的内容转换为具体的存在。
二、File类的构造方法
- File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
- File(String parent,String child):从父路径名字符串和子路径名字符串创建新的File实例
- File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例
import java.io.File;
public class Demo {
public static void main(String[] args) {
//File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File f1 = new File("D:\\file\\java.txt");
System.out.println(f1);
//File(String parent,String child):从父路径名字符串和子路径名字符串创建新的File实例
File f2 = new File("D:\\file", "java.txt");
System.out.println(f2);
//File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例
File f3 = new File("D:\\file");
File f4 = new File(f3, "java.txt");
System.out.println(f4);
}
}
三、File类的创建功能
- public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
- public boolean mkdir():创建由该抽象路径名命名的目录
- public boolean mkdirs():创建由该抽象路径名命名的目录,包括任何必需但不存在的父目录
import java.io.File;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws IOException {
//在D:\\file目录下创建一个文件java.txt
File f1 = new File("D:\\file\\java.txt");
f1.createNewFile();
//在D:\\file目录下创建一个目录JavaSE
File f2 = new File("D:\\JavaSE");
f2.mkdir();
//在D:\\file目录下创建一个多级目录JavaWEB\\HTML
File f3 = new File("D:\\JavaWEB\\HTML");
f3.mkdirs();
}
}
四、File类判断和获取功能
- public boolean isDirectory():测试此抽象路径名表示的File是否为目录
- public boolean isFile():测试此抽象路径名表示的File是否为文件
- public boolean exists():测试此抽象路径名表示的File是否存在
- public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
- public String getPath():将此抽象路径名转换为路径名字符串
- public String getName():返回由此抽象路径名表示的文件或目录的名字
- public String[] list():返回此抽象路径名表示的目录中文件和目录的名称字符串数组
- public File[] listFiles():返回此抽象路径名表示的目录中文件和目录的File对象数组
import java.io.File;
public class Demo2 {
public static void main(String[] args) {
File f = new File("JiHeM\\java.txt");
//public boolean isDirectory():测试此抽象路径名表示的File是否为目录
//public boolean isFile():测试此抽象路径名表示的File是否为文件
//public boolean exists():测试此抽象路径名表示的File是否存在
System.out.println(f.isDirectory());//false
System.out.println(f.isFile());//true
System.out.println(f.exists());//true
System.out.println("-----------------------");
//public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
//public String getPath():将此抽象路径名转换为路径名字符串
//public String getName():返回由此抽象路径名表示的文件或目录的名字
System.out.println(f.getAbsoluteFile());//D:\javaProject\JiHe\JiHeM\java.txt
System.out.println(f.getPath());//JiHeM\java.txt
System.out.println(f.getName());//java.txt
System.out.println("-----------------------");
//public String[] list():返回此抽象路径名表示的目录中文件和目录的名称字符串数组
File f2 = new File("D:\\javaProject");
String[] list = f2.list();
for (String s : list) {
System.out.println(s);
}
System.out.println("-----------------------");
//public File[] listFiles():返回此抽象路径名表示的目录中文件和目录的File对象数组
File[] files = f2.listFiles();
for (File fil : files) {
System.out.println(fil);
}
}
}
五、File类的删除功能
- public boolean detele():删除此抽象路径名表示的文件或目录
如果一个目录中有内容(目录、文件),不能直接删除,应该先删除目录中的内容,最后才能删除目录
import java.io.File;
public class Demo3 {
public static void main(String[] args) {
//删除文件
File f1 = new File("D:\\file\\java.txt");
System.out.println(f1.delete());//true
//删除目录,该目录下为空
File f2 = new File("D:\\file\\JavaSE");
System.out.println(f2.delete());//true
//删除目录,该目录下不为空,要先删除目录下的文件,再删除目录
File f3 = new File("D:\\file\\JavaSE\\abc.txt");
System.out.println(f3.delete());//true
File f4 = new File("D:\\file\\JavaSE");
System.out.println(f4.delete());//true
}
}
六、遍历目录
要求
给定一个目录,通过递归完成遍历该目录下的所有内容,并把所有文件的绝对路径输出在控制台上
思路
- 根据给定的路径创建一个File对象
- 定义一个方法,用于获取给定目录下的所有内容,参数为第一轮创建的File对象
- 获取给定的File目录下所有文件或目录的File数组
- 遍历该File数组,得到每一个File对象
- 判断该File对象是否是目录,如果是则递归调用,否则获取绝对路径输出在控制台
- 调用方法
代码
import java.io.File;
public class Demo4 {
public static void main(String[] args) {
File f = new File("G:\\pycharmB\\PyCharm 2020.3.2");
getAllFilePath(f);
}
public static void getAllFilePath(File f) {
File[] files = f.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
getAllFilePath(file);
} else {
System.out.println(file.getAbsoluteFile());
}
}
}
}
}
运行结果