31.File文件

File文件

    • 1. 概述
    • 2. 构造方法
      • 2.1 方法
      • 2.2 代码示例
    • 3. 成员方法
      • 3.1 判断、获取的方法
        • 3.1.1 方法
        • 3.1.2 代码示例
      • 3.2 创建、删除的方法
        • 3.2.1 方法
        • 3.2.2 代码示例
      • 3.3 获取、遍历的方法
        • 3.3.1 重点方法
          • 3.3.1.1 方法
          • 3.3.1.2 代码示例
        • 3.3.2 所有方法
          • 3.3.2.1 方法
          • 3.3.2.2 代码示例
    • 4. 注意事项

1. 概述

java.io.File 是 Java 中用于表示文件或目录的类。它提供了操作文件和目录的方法,例如创建、删除、重命名等。

File 类中的对象可以用来访问文件的属性,如文件路径、名称、大小等。

File 类的构造方法可以根据不同的参数创建文件对象。常见的构造方法有:

  • File(String pathname):根据文件路径创建文件对象。路径可以是绝对路径或相对路径。

  • File(String parent, String child):根据父路径名字符串和子路径名字符串创建文件对象。父路径和子路径通过拼接而成。

  • File(File parent, String child):根据父路径对应文件对象和子路径名字符串创建文件对象。父路径和子路径通过拼接而成。

File 类提供了多个方法来操作文件和目录,包括:

  • 创建和删除文件或目录的方法:createNewFile()mkdir()mkdirs()delete()

  • 文件属性的方法:exists()isFile()isDirectory()isHidden()length()

  • 文件信息的方法:getName()getPath()getAbsolutePath()getParent()

2. 构造方法

2.1 方法

File 类的构造方法可以根据不同的参数创建文件对象。

方法名称说明
public File(String pathname) 根据文件路径创建文件对象
public File(String parent, String child) 根据父路径名字符串和子路径名字符串创建文件对象(拼接)
public File(File parent, String child)根据父路径对应文件对象和子路径名字符串创建文件对象(拼接)

2.2 代码示例

  • 代码示例
    练习:将该路径用文件对象表示:“C:\Users\用户\Desktop\JAVA”
    package text.text03;import java.io.File;/*File
    File:File对象表示路径,可以是文件,也可以是文件夹,这个路径可以存在,也可以不存在绝对路径:带盘符的路径
    相对路径:不带盘符的路径,默认到当前项目下去找构造方法:
    | 方法名称                                    | 说明                                               |
    | ------------------------------------------- | -------------------------------------------------- |
    | `public File(String pathname) `             | 根据文件路径创建文件对象                           |
    | `public File(String parent, String child) ` | 根据父路径名字符串和子路径名字符串创建文件对象(拼接)     |
    | `public File(File parent, String child)`    | 根据父路径对应文件对象和子路径名字符串创建文件对象(拼接) |练习:将该路径用文件对象表示:"C:\Users\用户\Desktop\JAVA"*/
    public class text01 {public static void main(String[] args) {//1.`public File(String pathname) `: 根据文件路径创建文件对象System.out.println("================1.`public File(String pathname) `: 根据文件路径创建文件对象================");String str1 = "C:\\Users\\用户\\Desktop\\JAVA";//创建文件对象File file1 = new File(str1);System.out.println(file1);          //C:\Users\用户\Desktop\JAVA//2.`public File(String parent, String child) `: 根据父路径名字符串和子路径名字符串创建文件对象System.out.println("================2.`public File(String parent, String child) `: 根据父路径名字符串和子路径名字符串创建文件对象================");String str2 = "C:\\Users\\用户\\Desktop";String str3 = "JAVA";//创建文件对象File file2 = new File(str2, str3);System.out.println(file2);        //C:\Users\用户\Desktop\JAVA//3.`public File(File parent, String child)` : 根据父路径对应文件对象和子路径名字符串创建文件对象System.out.println("================3.`public File(File parent, String child)` : 根据父路径对应文件对象和子路径名字符串创建文件对象 ================");String str4 = "C:\\Users\\用户\\Desktop";//创建文件对象File file4 = new File(str4);String str5 = "JAVA";//创建文件对象File file5 = new File(file4, str5);System.out.println(file5);        //C:\Users\用户\Desktop\JAVA}
    }
  • 输出结果
    在这里插入图片描述

3. 成员方法

在 Java 的 java.io.File 类中,有许多有用的成员方法来操作文件和目录。这些方法提供了各种文件系统操作和文件属性的访问。

3.1 判断、获取的方法

3.1.1 方法
方法名称说明
public boolean isDirectory()判断此路径名表示的 File 是否为文件夹
public boolean isFile()判断此路径名表示的 File 是否为文件
public boolean exists()判断此路径名表示的 File 是否存在
public long length()返回文件的大小(字节数量)
public String getAbsolutePath()返回文件的绝对路径
public String getPath()返回定义文件时使用的路径
public String getName()返回文件的名称,带后缀
public long lastModified()返回文件的最后修改时间(时间毫秒值)

注意:

  1. public long length() : 返回文件的大小(字节数量)
    • 细节1:这个方法只能获取文件的大小,单位是字节,如果想要M,G,可以不断地除以1024

    • 细节2:这个方法无法获取文件夹的大小,如果想要获取文件夹的大小,需要把整个文件夹里面所有的文件大小累加起来

  2. public string getName() : 返回文件的名称,带后缀
    • 细节1:调用者是文件,返回的是文件名+后缀名、扩展名

    • 细节2:调用者是文件夹,返回值是文件夹的名字

3.1.2 代码示例
  • 代码示例
    文件夹:D:\QQ
    文件:D:\QQ\QQ.txt
    不存在的文件:D:\QQ\QQQQQQ.txt
    package text.text03;import java.io.File;/*File的常见成员方法(判断、获取)| 方法名称                        | 说明                               |
    | ------------------------------- | ---------------------------------- |
    | public boolean isDirectory()    | 判断此路径名表示的File是否为文件夹 |
    | public boolean isFile()         | 判断此路径名表示的File是否为文件   |
    | public boolean exists()         | 判断此路径名表示的File是否存在     |
    | public long length()            | 返回文件的大小(字节数量)           |
    | public string getAbsolutePath() | 返回文件的绝对路径                 |
    | public string getPath()         | 返回定义文件时使用的路径           |
    | public string getName()         | 返回文件的名称,带后缀             |
    | public long lastModified()      | 返回文件的最后修改时间(时间毫秒值) |注意:
    1.public long length() : 返回文件的大小(字节数量)细节1:这个方法只能获取文件的大小,单位是字节,如果想要M,G,可以不断地除以1024细节2:这个方法无法获取文件夹的大小,如果想要获取文件夹的大小,需要把整个文件夹里面所有的文件大小累加起来
    2.public string getName() : 返回文件的名称,带后缀细节1:调用者是文件,返回的是文件名+后缀名、扩展名细节2:调用者是文件夹,返回值是文件夹的名字文件夹:D:\QQ
    文件:D:\QQ\QQ.txt
    不存在的文件:D:\QQ\QQQQQQ.txt*/
    public class text02 {public static void main(String[] args) {//1.public boolean isDirectory() : 判断此路径名表示的File是否为文件夹System.out.println("===============1.public boolean isDirectory() : 判断此路径名表示的File是否为文件夹===============");//存在的文件夹File file1 = new File("D:\\QQ");//存在的文件File file2 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file3 = new File("D:\\QQ\\QQQQQQ.txt");boolean directory1 = file1.isDirectory();boolean directory2 = file2.isDirectory();boolean directory3 = file3.isDirectory();System.out.println(file1 + "是否为文件夹:" + directory1);  //trueSystem.out.println(file2 + "是否为文件夹:" + directory2);  //falseSystem.out.println(file3 + "是否为文件夹:" + directory3);  //falseSystem.out.println();//2.public boolean isFile() : 判断此路径名表示的File是否为文件System.out.println("===============2.public boolean isFile() : 判断此路径名表示的File是否为文件===============");//存在的文件夹File file4 = new File("D:D:\\QQ");//存在的文件File file5 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file6 = new File("D:D:\\QQ\\QQQQQQ.txt");boolean isFile1 = file4.isFile();boolean isFile2 = file5.isFile();boolean isFile3 = file6.isFile();System.out.println(file4 + "是否为文件:" + isFile1);     //falseSystem.out.println(file5 + "是否为文件:" + isFile2);     //trueSystem.out.println(file6 + "是否为文件:" + isFile3);     //falseSystem.out.println();//3.public boolean exists()  : 判断此路径名表示的File是否存在System.out.println("===============3.public boolean exists()  : 判断此路径名表示的File是否存在===============");//存在的文件夹File file7 = new File("D:D:\\QQ");//存在的文件File file8 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file9 = new File("D:D:\\QQ\\QQQQQQ.txt");boolean exists1 = file7.exists();boolean exists2 = file8.exists();boolean exists3 = file9.exists();System.out.println(file7 + "是否为存在:" + exists1);       //falseSystem.out.println(file8 + "是否为存在:" + exists2);       //trueSystem.out.println(file9 + "是否为存在:" + exists3);       //falseSystem.out.println();//4.public long length() : 返回文件的大小(字节数量)//细节1:这个方法只能获取文件的大小,单位是字节,如果想要M,G,可以不断地除以1024//细节2:这个方法无法获取文件夹的大小,如果想要获取文件夹的大小,需要把整个文件夹里面所有的文件大小累加起来System.out.println("===============4.public long length() : 返回文件的大小(字节数量)===============");//存在的文件夹File file10 = new File("D:D:\\QQ");//存在的文件File file11 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file12 = new File("D:D:\\QQ\\QQQQQQ.txt");long length1 = file10.length();long length2 = file11.length();long length3 = file12.length();System.out.println(file10 + "的文件大小是:" + length1);  //0System.out.println(file11 + "的文件大小是:" + length2);  //27System.out.println(file12 + "的文件大小是:" + length3);  //0System.out.println();//5.public string getAbsolutePath() : 返回文件的绝对路径System.out.println("===============5.public string getAbsolutePath() : 返回文件的绝对路径===============");//存在的文件夹File file13 = new File("D:D:\\QQ");//存在的文件File file14 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file15 = new File("D:D:\\QQ\\QQQQQQ.txt");String absolutePath1 = file13.getAbsolutePath();String absolutePath2 = file14.getAbsolutePath();String absolutePath3 = file15.getAbsolutePath();System.out.println(file13 + "文件的绝对路径是:" + absolutePath1);    //D:\JavaCode\code\D:\QQSystem.out.println(file14 + "文件的绝对路径是:" + absolutePath2);    //D:\QQ\QQ.txtSystem.out.println(file15 + "文件的绝对路径是:" + absolutePath3);    //D:\JavaCode\code\D:\QQ\QQQQQQ.txtSystem.out.println();//6.public string getPath() : 返回定义文件时使用的路径System.out.println("===============6.public string getPath() : 返回定义文件时使用的路径===============");//存在的文件夹File file16 = new File("D:D:\\QQ");//存在的文件File file17 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file18 = new File("D:D:\\QQ\\QQQQQQ.txt");String path1 = file16.getPath();String path2 = file17.getPath();String path3 = file18.getPath();System.out.println(file16 + "定义文件时使用的路径是:" + path1);  //D:D:\QQSystem.out.println(file17 + "定义文件时使用的路径是:" + path2);  //D:\QQ\QQ.txtSystem.out.println(file18 + "定义文件时使用的路径是:" + path3);  //D:D:\QQ\QQQQQQ.txtSystem.out.println();//7.public string getName() : 返回文件的名称,带后缀//细节1:调用者是文件,返回的是文件名+后缀名、扩展名//细节2:调用者是文件夹,返回值是文件夹的名字System.out.println("===============7.public string getName() : 返回文件的名称,带后缀===============");//存在的文件夹File file19 = new File("D:D:\\QQ");//存在的文件File file20 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file21 = new File("D:D:\\QQ\\QQQQQQ.txt");String name1 = file19.getName();String name2 = file20.getName();String name3 = file21.getName();System.out.println(file19 + "文件的名称,带后缀为:" + name1);    //QQSystem.out.println(file20 + "文件的名称,带后缀为:" + name2);    //QQ.txtSystem.out.println(file21 + "文件的名称,带后缀为:" + name3);    //QQQQQQ.txtSystem.out.println();//8.public long lastModified() : 返回文件的最后修改时间(时间毫秒值)System.out.println("===============8.public long lastModified() : 返回文件的最后修改时间(时间毫秒值)===============");//存在的文件夹File file22 = new File("D:D:\\QQ");//存在的文件File file23 = new File("D:\\QQ\\QQ.txt");//不存在的文件File file24 = new File("D:D:\\QQ\\QQQQQQ.txt");long time1 = file22.lastModified();long time2 = file23.lastModified();long time3 = file24.lastModified();System.out.println(file22 + "文件的最后修改时间(时间毫秒值)为:" + time1);   //0System.out.println(file23 + "文件的最后修改时间(时间毫秒值)为:" + time2);   //1707927977267System.out.println(file24 + "文件的最后修改时间(时间毫秒值)为:" + time3);   //0/*//删除文件file1.delete();file2.delete();file3.delete();file4.delete();file5.delete();file6.delete();file7.delete();file8.delete();file9.delete();file10.delete();file11.delete();file12.delete();file13.delete();file14.delete();file15.delete();file16.delete();file17.delete();file18.delete();file19.delete();file20.delete();file21.delete();file22.delete();file23.delete();file24.delete();*/}
    }
  • 输出结果
    • 1.public boolean isDirectory() : 判断此路径名表示的File是否为文件夹
      在这里插入图片描述

    • 2.public boolean isFile() : 判断此路径名表示的File是否为文件
      在这里插入图片描述

    • 3.public boolean exists() : 判断此路径名表示的File是否存在
      在这里插入图片描述

    • 4.public long length() : 返回文件的大小(字节数量)
      在这里插入图片描述

    • 5.public string getAbsolutePath() : 返回文件的绝对路径
      在这里插入图片描述

    • 6.public string getPath() : 返回定义文件时使用的路径
      在这里插入图片描述

    • 7.public string getName() : 返回文件的名称,带后缀
      在这里插入图片描述

    • 8.public long lastModified() : 返回文件的最后修改时间(时间毫秒值)
      在这里插入图片描述

3.2 创建、删除的方法

3.2.1 方法
方法名称说明
public boolean createNewFile()创建一个新的空文件
public boolean mkdir()创建单级文件夹
public boolean mkdirs()创建多级文件夹
public boolean delete()删除文件或空文件夹

注意

  1. public boolean createNewFile() : 创建一个新的空的文件

    • 细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true
      如果当前路径表示的文件是存在的,则创建失败,方法返回false

    • 细节2:如果父级路径是不存在的,那么方法会有常IOException

    • 细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件

  2. public boolean mkdir() : 创建单级文件夹

    • 细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false

    • 细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。

  3. public boolean mkdirs() : 创建多级文件夹

    • 细节:既可以创建单级的,又可以创建多级的文件夹
  4. public boolean delete() : 删除文件、空文件夹

    • 细节
      • 如果删除的是文件,则直接删除,不走回收站。

      • 如果删除的是空文件夹,则直接删除,不走回收站

      • 如果删除的是有内容的文件夹,则删除失败

3.2.2 代码示例
  • 代码示例
    package text.text03;import java.io.File;
    import java.io.IOException;/* File的常见成员方法(创建、删除)| 方法名称                       | 说明                 |
    | ------------------------------ | -------------------- |
    | public boolean createNewFile() | 创建一个新的空的文件 |
    | public boolean mkdir()         | 创建单级文件夹       |
    | public boolean mkdirs()        | 创建多级文件夹       |
    | public boolean delete()        | 删除文件、空文件夹   |注意:
    1.public boolean createNewFile() : 创建一个新的空的文件细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true如果当前路径表示的文件是存在的,则创建失败,方法返回false细节2:如果父级路径是不存在的,那么方法会有常IOException细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
    2.public boolean mkdir() : 创建单级文件夹细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。
    3.public boolean mkdirs() : 创建多级文件夹细节:既可以创建单级的,又可以创建多级的文件夹
    4.public boolean delete() : 删除文件、空文件夹
    细节:如果删除的是文件,则直接删除,不走回收站。如果删除的是空文件夹,则直接删除,不走回收站如果删除的是有内容的文件夹,则删除失败*/
    public class text03 {public static void main(String[] args) throws IOException {//1.public boolean createNewFile() : 创建一个新的空的文件//细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true//     如果当前路径表示的文件是存在的,则创建失败,方法返回false//细节2:如果父级路径是不存在的,那么方法会有常IOException//细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件System.out.println("===============1.public boolean createNewFile() : 创建一个新的空的文件===============");//不存在的文件File file1 = new File("D:\\WW");//存在的文件File file2 = new File("D:\\QQ\\QQ.txt");boolean newFile1 = file1.createNewFile();boolean newFile2 = file2.createNewFile();System.out.println(file1 + " 一个新的空的文件是否成功被创建:" + newFile1);      //trueSystem.out.println(file2 + " 一个新的空的文件是否成功被创建:" + newFile2);      //falseSystem.out.println();//2.public boolean mkdir() : 创建单级文件夹//细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false//细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。System.out.println("===============2.public boolean mkdir() : 创建单级文件夹===============");//单级文件夹File file3 = new File("D:\\MM");//多级文件夹File file4 = new File("D:\\WW\\QQ\\LL");boolean mkdir1 = file3.mkdir();boolean mkdir2 = file4.mkdir();System.out.println(file3 + "单级文件夹是否成功被创建:" + mkdir1);      //trueSystem.out.println(file4 + "单级文件夹是否成功被创建:" + mkdir2);      //falseSystem.out.println();//3.public boolean mkdirs() : 创建多级文件夹//细节:既可以创建单级的,又可以创建多级的文件夹System.out.println("===============3.public boolean mkdirs() : 创建多级文件夹===============");//单级文件夹File file5 = new File("D:\\NN");    //true//多级文件夹File file6 = new File("D:\\QQ\\QQ");   //trueboolean mkdirs1 = file5.mkdirs();boolean mkdirs2 = file6.mkdirs();System.out.println(file5 + "多级文件夹是否成功被创建:" + mkdirs1);System.out.println(file6 + "多级文件夹是否成功被创建:" + mkdirs2);System.out.println();//4.public boolean delete() : 删除文件、空文件夹//细节:如果删除的是文件,则直接删除,不走回收站。//    如果删除的是空文件夹,则直接删除,不走回收站//    如果删除的是有内容的文件夹,则删除失败System.out.println("===============4.public boolean delete() : 删除文件、空文件夹===============");boolean delete1 = file1.delete();boolean delete2 = file2.delete();boolean delete3 = file3.delete();boolean delete4 = file4.delete();boolean delete5 = file5.delete();boolean delete6 = file6.delete();System.out.println(file1 + "是否成功被删除:" + delete1);  //trueSystem.out.println(file2 + "是否成功被删除:" + delete2);  //trueSystem.out.println(file3 + "是否成功被删除:" + delete3);  //trueSystem.out.println(file4 + "是否成功被删除:" + delete4);  //falseSystem.out.println(file5 + "是否成功被删除:" + delete5);  //trueSystem.out.println(file6 + "是否成功被删除:" + delete6);  //true}
    }
  • 输出结果
    在这里插入图片描述

3.3 获取、遍历的方法

3.3.1 重点方法
3.3.1.1 方法
方法名称说明
public File[] listFiles()返回一个 File 数组,表示该 File 目录中的所有的子文件或目录的对象
  • 作用:获取文件夹里面的所有内容,包括隐藏的文件或文件夹,把所有的内容放到数组中返回

注意:

  • 细节1:当调用者File表示的路径不存在时,返回null

  • 细节2:当调用者File表示的路径是文件时,返回nul

  • 细节3:当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组

  • 细节4:当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回

  • 细节5:当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件

  • 细节6:当调用者File表示的路径是需要权限才能访问的文件夹时,返回null

3.3.1.2 代码示例
  • 代码示例
    文件夹:D:\QQ
    package text.text03;import java.io.File;/*File的常见成员方法(获取并遍历)(重点)| 方法名称                    | 说明                                                   |
    | --------------------------- | ------------------------------------------------------ |
    | `public File[] listFiles()` | 返回一个File数组,表示该File目录中的所有的子文件或目录 |作用:获取文件夹里面的所有内容,包括隐藏的文件或文件夹,把所有的内容放到数组中返回注意:细节1:当调用者File表示的路径不存在时,返回null细节2:当调用者File表示的路径是文件时,返回nul细节3:当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组细节4:当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回细节5:当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件细节6:当调用者File表示的路径是需要权限才能访问的文件夹时,返回null文件夹:D:\QQ*/
    public class text04 {public static void main(String[] args) {//创建文件对象File file = new File("D:\\QQ");//调用listFiles()方法//细节1:当调用者File表示的路径不存在时,返回null//细节2:当调用者File表示的路径是文件时,返回nul//细节3:当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组//细节4:当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回//细节5:当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件//细节6:当调用者File表示的路径是需要权限才能访问的文件夹时,返回nullFile[] files = file.listFiles();//遍历File[]数组for (File f : files) {System.out.println(f);}}
    }
  • 输出结果
    在这里插入图片描述
3.3.2 所有方法
3.3.2.1 方法
方法名称说明
public static File[] listRoots()列出可用的文件系统根(获取系统中所有的盘符)
public String[] list()获取当前路径下的所有内容的名称,仅返回名称而不是完整路径
public String[] list(FilenameFilter filter)获取当前路径下满足文件名过滤器条件的所有内容的名称
public File[] listFiles()获取当前路径下的所有内容的 File 对象,包括文件和文件夹
public File[] listFiles(FileFilter filter)获取当前路径下满足文件过滤器条件的所有内容的 File 对象
public File[] listFiles(FilenameFilter filter)获取当前路径下满足文件名过滤器条件的所有内容的 File 对象

FilenameFilter 是一个接口,用于过滤文件名,FileFilter 是一个接口,用于过滤文件和文件夹。

注意:

  1. public string[] list(FilenameFilter filter) :利用文件名过滤器获取当前该路径下所有内容
    • 细节1:FilenameFilter是一个函数式接口,里面重写的accept方法的形参,依次表示该文件夹里面得到每一个文件或者文件夹的路径
      • 参数一:父级路径文件对象
      • 参数二:子级路径
      • 返回值:
        • 如果返回值是true,就表示当前路劲保留;
        • 如果返回值是false,就表示当前路径舍弃不要。
3.3.2.2 代码示例
  • 代码示例
    文件夹:D:\QQ
    package text.text03;import java.io.File;
    import java.io.FileFilter;
    import java.io.FilenameFilter;
    import java.util.Arrays;/*File的常见成员方法(获取并遍历)(所有)| 方法名称                                       | 说明                                     |
    | ---------------------------------------------- | ---------------------------------------- |
    | public static File[] listRoots()               | 列出可用的文件系统根(获取系统中所有的盘符)                     |
    | public string[] list()                         | 获取当前该路径下所有内容(仅仅能获取名字)                 |
    | public string[] list(FilenameFilter filter)    | 利用文件名过滤器获取当前该路径下所有内容 |
    | public File[] listFiles()                      | 获取当前该路径下所有内容                 |
    | public File[] listFiles(FileFilter filter)     | 利用文件名过滤器获取当前该路径下所有内容 |
    | public File[] listFiles(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |注意:1.public string[] list(FilenameFilter filter) :利用文件名过滤器获取当前该路径下所有内容细节1:FilenameFilter是一个函数式接口,里面重写的accept方法的形参,依次表示该文件夹里面得到每一个文件或者文件夹的路径参数一:父级路径文件对象参数二:子级路径返回值:如果返回值是true,就表示当前路劲保留;如果返回值是false,就表示当前路径舍弃不要。文件夹:D:\QQ*/
    public class text05 {public static void main(String[] args) {//1.public static File[] listRoots() :列出可用的文件系统根(获取系统中所有的盘符)System.out.println("================1.public static File[] listRoots() :列出可用的文件系统根(获取系统中所有的盘符)================");File[] files1 = File.listRoots();System.out.println("系统中所有的盘符为:" + Arrays.toString(files1));   //[C:\, D:\]System.out.println();//2.public string[] list():获取当前该路径下所有内容(仅仅能获取名字)System.out.println("================2.public string[] list():获取当前该路径下所有内容(仅仅能获取名字)================");File file1 = new File("D:\\QQ");String[] list1 = file1.list();System.out.println(file1 + "路径下所有内容为:" + Arrays.toString(list1));System.out.println();//3.public string[] list(FilenameFilter filter) :利用文件名过滤器获取当前该路径下所有内容System.out.println("================3.public string[] list(FilenameFilter filter) :利用文件名过滤器获取当前该路径下所有内容================");File file2 = new File("D:\\QQ");//获取文件后缀为.txt的文件String[] list2 = file2.list(new FilenameFilter() {@Override//参数一:父级路径文件对象//参数二:子级路径//返回值:如果返回值是true,就表示当前路劲保留;//       如果返回值是false,就表示当前路径舍弃不要。public boolean accept(File dir, String name) {File file = new File(dir, name);return file.isFile() && file.getName().endsWith(".txt");}});System.out.println(file2 + "路径下所有文件后缀为.txt的文件为:" + Arrays.toString(list2));   //[QQ.txt, QQWhatsnew.txt]System.out.println();//4.public File[] listFiles() :获取当前该路径下所有内容System.out.println("================4.public File[] listFiles() :获取当前该路径下所有内容================");//重点内容,在D:\JavaCode\code\codeText01\src\text\text03\text04.java中System.out.println();//5.public File[] listFiles(FileFilter filter):利用文件名过滤器获取当前该路径下所有内容System.out.println("================5.public File[] listFiles(FileFilter filter):利用文件名过滤器获取当前该路径下所有内容================");File file3 = new File("D:\\QQ");//获取文件后缀为.txt的文件File[] files2 = file3.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.isFile() && pathname.getName().endsWith(".txt");}});System.out.println(file3 + "路径下所有文件后缀为.txt的文件为:" + Arrays.toString(files2));  //[D:\QQ\QQ.txt, D:\QQ\QQWhatsnew.txt]System.out.println();//6.public File[] listFiles(FilenameFilter filter):利用文件名过滤器获取当前该路径下所有内容System.out.println("================6.public File[] listFiles(FilenameFilter filter):利用文件名过滤器获取当前该路径下所有内容================");File file4 = new File("D:\\QQ");//获取文件后缀为.txt的文件File[] files = file4.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File file = new File(dir, name);return file.isFile() && file.getName().endsWith(".txt");}});System.out.println(file4 + "路径下所有文件后缀为.txt的文件为:" + Arrays.toString(files));      //[D:\QQ\QQ.txt, D:\QQ\QQWhatsnew.txt]}
    }
  • 输出结果
    在这里插入图片描述

4. 注意事项

  1. 路径分隔符:在不同的操作系统中,路径分隔符可以是不同的。

    例如,在Windows系统中使用反斜杠(\)作为路径分隔符,在Linux和Mac系统中使用正斜杠(/)作为路径分隔符。为了确保跨平台兼容性,可以使用 File.separator 来代替硬编码的路径分隔符。

  2. 文件权限:在进行文件操作时,要注意文件的权限设置。确保你的程序具有足够的权限来读取、写入或执行文件。否则,在运行时可能会出现 SecurityException 异常。

  3. 文件并发访问:多个线程或多个程序同时对同一个文件进行并发读写可能导致数据损坏或不一致。在进行并发文件访问时,需要采取适当的同步机制(如使用锁或同步块)来确保数据一致性。

  4. 文件路径有效性检查:在创建或访问文件之前,应始终进行路径有效性检查。可以使用 exists() 方法检查文件或目录是否存在,以及 isDirectory()isFile() 方法检查路径表示的是目录还是文件。

  5. 错误处理:在文件操作过程中,可能会发生许多异常情况,如文件不存在、无法读取或写入文件等。确保在代码中适当地捕获和处理这些异常,以提供适当的用户反馈或执行后续操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL-ES 学习(4)---- OpenGL-ES 坐标体系

坐标体系 我们知道 OpenGL -ES 坐标系中每个顶点的 x,y,z 坐标都应该在 -1.0 到 1.0 之间,超出这个坐标范围的顶点都将不可见。 将一个物体(图像)渲染到屏幕上,通常经过将物体坐标转换为标准化设备坐标&am…

蓝牙BLE学习-GAP

1.概述 GAP层(Generic access profile-通用访问配置文件)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式的一种,而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的…

(三十八)大数据实战——Atlas元数据管理平台的部署安装

前言 Apache Atlas 是一个开源的数据治理和元数据管理平台,旨在帮助组织有效管理和利用其数据资产。为组织提供开放式元数据管理和治理功能 ,用以构建其数据资产目录,对这些资产进行分类和管理,形成数据字典 。并为数据分析师和数…

深度学习之反向传播算法

反向传播算法 数学公式算法代码结果 算法中一些函数的区别 数学公式 算法代码 这里用反向传播算法,计算 y w * x模型 import numpy as np import matplotlib.pyplot as ply#反向传播算法,需要使用pytorch框架, #这里导入pytorch框架&#xf…

MySQL 基础知识(四)之表操作

目录 1 约束 2 查看已有表 3 创建表 4 查看表结构 5 修改表 6 删除表 1 约束 主键约束 primary key:唯一,标识表中的一行数据,此列的值不可重复,且不能为 NULL,此外,可以多个列组成主键唯一约束 uniq…

Phobos捆绑某数控软件AdobeIPCBroker组件定向勒索

前言 Phobos勒索病毒最早于2019年被首次发现并开始流行起来,该勒索病毒的勒索提示信息特征与CrySiS(Dharma)勒索病毒非常相似,但是两款勒索病毒的代码特征却是完全不一样,近日笔者在逛某开源恶意软件沙箱的时候发现了一款Phobos勒索病毒捆绑…

Windows编程环境配置!

喜欢的话麻烦大家多点点关注,谢谢! 原文地址:Windows编程环境配置! - Pleasure的博客 下面是正文内容: 前言 近期闲来无事,就想着把Windows系统中的环境给完善整理一下。方便后续码字时的不时之需。 正文…

百度云AI

百度云AI概述 Face腾讯优图科大讯飞 百度人脸识别基于深度学习的人脸识别方案,准确识别图片中的人脸信息,提供如下功能: 人脸检测:精准定位图中人脸,获得眼、口、鼻等72个关键点位置,分析性别、年龄、表…

[python] 罗技动态链接驱动库DLL 控制 键鼠

[python] 罗技动态链接驱动库DLL 控制 键鼠 最近在玩搬砖游戏晶核, 每天有很多重复繁琐的"打卡"操作, 得知隔壁御三家游戏就有大佬做了自动收割的辅助工具,我就想模仿写一个.不过大佬们写的开源工具厉害得多,加了神经网络自动识别,实现寻路和点击功能.我目前最多就是…

模拟电子技术——分压式偏置放大电路、多级放大电路、差动放大电路、互补输出级

文章目录 前言基本放大电路链接,上一篇 [基本放大电路](https://blog.csdn.net/weixin_47541751/article/details/136112075?spm1001.2014.3001.5502) 一、分压式偏置放大电路什么是分压式偏置电路分压式电路组成电路分析估算静态工作点 二、多级放大电路什么是多级…

仰暮计划|“他们吃树皮,挖野菜,将玉米棒和玉米皮也做成食物来解饥”

我的姥姥今年七十岁了,她病的很严重,我趁着在病房的这段时间对她进行了采访。 我的姥姥1953年出生在一个小山村里,她有四个兄弟和两个姐妹,据她说,她的父母既是爱她的又是严厉的,因为孩子多并且生活困难&a…

python - OSError:错误没有名为 [‘pytorch_model.bin‘

python - OSError:错误没有名为 [‘pytorch_model.bin’] 自己训练的模型存储好了以后 model MT5ForConditionalGeneration.from_pretrained(“ner/best”) 之前还可以跑 现在报错 错误没有名为 [‘pytorch_model.bin’] 还原了一下conda env 把四版变成三版了 …

C# CAD2016 判断多边形的方向正时针或逆时针旋转

方法一&#xff1a;基于相邻顶点相对位置判断顺时针排列 // 计算当前子序列是否为顺时针排列 for (int i 1; i < outerPoints.Count; i) {int index (startVertexIndex i) % outerPoints.Count;int prevIndex (startVertexIndex i - 1) % outerPoints.Count;Point2d c…

基于JAVA,SpringBoot和Vue二手房屋销售系统设计

摘要&#xff1a; 本研究旨在设计并实现一个基于JAVA, SpringBoot和Vue技术的二手房屋销售系统。该系统采用当前流行的前后端分离架构&#xff0c;后端使用SpringBoot框架快速搭建RESTful API&#xff0c;提供稳定且高效的服务端应用&#xff1b;前端则通过Vue.js框架构建动态…

Linux用户常用命令——Linux命令(一)

大家好&#xff0c;从这篇文章开始我将开始进行Linux常用命令的学习&#xff0c;本专栏的每一个知识点我都会尽量在Linux系统中手操实现一遍。如果在读这篇文章的你也想熟悉Linux常用操作命令&#xff0c;我非常推荐你也搭个Linux系统进行实操学习。因为Linux常用的命令的知识点…

Python算法探索:从经典到现代

引言 Python&#xff0c;作为一种功能强大的编程语言&#xff0c;一直是算法实现的首选工具。从经典的排序和查找算法到现代的机器学习和深度学习算法&#xff0c;Python都展现出了其强大的实力。接下来&#xff0c;我们将一起探索Python算法的经典与现代。 一、经典算法&#…

LabVIEW伺服阀动静态测试系统

LabVIEW伺服阀动静态测试系统 基于LabVIEW开发了一套伺服阀动静态测试系统&#xff0c;提高伺服阀在电液伺服控制系统中的性能测试精度和效率。通过设计合理的液压系统、电控系统及软件系统&#xff0c;实现了伺服阀的动态和静态特性测试&#xff0c;采用流量-压力双闭环稳态控…

【C语言】数据结构#实现堆

目录 &#xff08;一&#xff09;堆 &#xff08;1&#xff09;堆区与数据结构的堆 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09;功能实现 &#xff08;1&#xff09;堆的初始化 &#xff08;2&#xff09;堆的销毁 &#xff08;3&#xff09;插入数据 …

快速部署MES源码/万界星空科技开源MES

什么是开源MES软件&#xff1f; 开源MES软件是指源代码可以免费获取、修改和分发的MES软件。与传统的商业MES软件相比&#xff0c;开源MES软件具有更高的灵活性和可定制性。企业可以根据自身的需求对软件进行定制化开发&#xff0c;满足不同生产环境下的特定需求。 开源MES软件…

稳压二极管应用电路

稳压二极管比较特殊&#xff0c;基本结构与普通二极管一样&#xff0c;也有一个PN结。由于制造工艺的不同&#xff0c;当这种PN结处于反向击穿状态时&#xff0c;PN结不会损坏(普通二极管的PN结是会损坏)&#xff0c;在稳压二极管用来稳定电压时就是利用它的这一击穿特性。 由…