File类
- 概述:文件和目录路径名的抽象表示,File 对象就代表一个路径
- 对与File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来要通过具体的操作把这个路径的内容转换为具体存在的。
常用方法
-
构造方法
方法 作用 File(String pathname) 通过给定路径名-字符串转换为抽象路径名来创建新的File实例 File(String parent , String child) 从父路径名字符串和子路径名字符串创建新的File实例 File(File parent , String child) 从父抽象路径名和子路径名字符串创建新的File实例 public class Test{public static void main(String[] args){// 1、通过给定路径名-字符串转换为抽象路径名来创建新的File实例File f1 = new File("D:\\a.txt");File f2 = new File("D:\\music");// 2、从父路径名字符串和子路径名字符串创建新的File实例File f3 = new File("D:\\a","b.txt");// 3、从父抽象路径名和子路径名字符串创建新的File实例File f4 = new File(f2 , "c.mp4");} }
-
创建方法
方法 作用 public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件(文件存在,返回true。不存在返回 false) public boolean mkdir() 创建由此抽象路径名命名的目录(文件夹) public boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录(创建多级目录) 注意:
①:创建文件的时候,要确保上级目录存在,才可以创建成功
public class Test{public static void main(String[] args) throws IOException {// 1、创建一个文件对象,其实就是创建 一个路径的 对象File f1 = new File("D:\\a.txt"); // 文件对象File f2 = new File("D:\\b"); // 单级文件夹对象File f3 = new File("D:\\c\\d"); // 多级文件夹对象// 2、创建文件(就是在磁盘中创建这个路径的文件或者文件夹)boolean a = f1.createNewFile();boolean b = f2.mkdir();boolean c = f3.mkdirs();System.out.println(a +" " + b +" " + c);} }
-
删除方法
方法 作用 public boolean delete() 删除由此抽象路径名表示的文件或目录 注意:删除文件的时候,要确保文件夹里没有文件,才可以删除文件夹成功
public class Test2 {public static void main(String[] args) {// 1、创建文件对象File f1 = new File("D:\\a.txt"); // 文件对象File f2 = new File("D:\\c"); // 单级文件夹对象// 2、删除文件(从磁盘中删除)boolean a = f1.delete();boolean b = f2.delete();System.out.println(a + " " + b);} }
运行结果:true false ,并且 D盘下 的 a.txt 已经删除(直接从电脑删除,不放入回收站),但是第二个是 false 是因为,我们代码上方的注意事项,c 文件夹下还有 d 文件夹,所以删除失败!
-
判断和获取方法
方法 作用 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对象数组 public class Test {public static void main(String[] args) {// 1、创建一个文件对象,其实就是创建 一个路径的 对象File f1 = new File("D:\\a.txt"); // 文件对象File f2 = new File("D:\\b"); // 单级文件夹对象File f3 = new File("D:\\c\\d"); // 多级文件夹对象File f4 = new File("D:\\c");// 2、判断此抽象路径名表示的File是否为文件和目录(文件夹)boolean a = f1.isFile();boolean b = f2.isDirectory();// 3、判断此抽象路径名表示的File是否存在boolean c = f1.exists();// 4、返回此抽象路径名的绝对路径名字符串String f3Path = f3.getAbsolutePath();// 5、将此抽象路径名转换为路径名字符串String path = f3.getPath();// 6、返回此抽象路径名表示的文件或目录的名称String name = f1.getName();System.out.println(a + " " + b + " " + c);System.out.println(f3Path);System.out.println(path);System.out.println(name);// 7、返回此抽象路径名表示的目录中的文件和目录的名称字符串数组String[] list = f4.list();for (String s : list) {System.out.println(s);}// 8、返回此抽象路径名表示的目录中的文件和目录的File对象数组File[] files = f4.listFiles();for (File file : files) {System.out.println(file);}} }
运行结果
false true false
D:\c\d
D:\c\d
a.txt
d
D:\c\d
绝对路径和相对路径
- 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件
- 相对路径:必须使用取自其他路径名的信息进行解释(必须要有个参考物)
案例
-
需求:在D盘下创建一个四级目录,以 a b c d 字母顺序创建,并且在 d 目录下 创建文件 e.mp4 和 f.txt(创建文件时,需要先去判断此文件是否存在)。最后遍历输出 a 文件夹下所有 文件的名字。并且遍历时,删除后缀为 .txt 的文件?
-
思路分析:
- 首先需要创建四个 文件对象
- 创建 两个文件
- 其次遍历 a 文件夹,并输出所有文件的名字
- 最后,在遍历的时候,判断后缀是否为 .txt ,是的话,执行删除
public class Test {// 创建文件对象方法public static void createFile(File f){// 首先判断文件是否存在if(!f.exists()){// 不存在,创建文件try {f.createNewFile();} catch (IOException e) {e.printStackTrace();}}}// 遍历文件,并删除后缀是 .txt 的文件public static void showAndDel(File f){// 判断是文件还是文件夹if(f.isDirectory()){File[] files = f.listFiles(); // 获取当前文件对象下的所有文件对象for (File file : files) { // 遍历输出名字,并继续递归向下System.out.println(file.getName());showAndDel(file);}}else{if(f.getName().endsWith(".txt")){ // 判断后缀是否是 .txt 是,执行删除f.delete();}}}public static void main(String[] args) {// 1、创建 4 个对象File f1 = new File("D:\\a\\b\\c\\d");File f2 = new File("D:\\a");File f3 = new File(f1 , "e.mp4");File f4 = new File(f1 , "f.txt");// 2、磁盘创建 文件和文件夹f1.mkdirs();createFile(f3);createFile(f4);// 3、遍历删除showAndDel(f2);} }