31.File文件

news2024/11/28 18:44:45

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. 代码示例
      • 4.1 示例1:创建文件夹
      • 4.2 示例2:查找文件(不考虑子文件夹)
      • 4.3 示例3:查找文件(考虑子文件夹)
      • 4.4 示例4:删除多级文件夹
      • 4.5 示例5:统计一个文件夹的总大小
      • 4.6 示例6:统计大小
    • 5. 注意事项

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);  //true
            System.out.println(file2 + "是否为文件夹:" + directory2);  //false
            System.out.println(file3 + "是否为文件夹:" + directory3);  //false
    
    
            System.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);     //false
            System.out.println(file5 + "是否为文件:" + isFile2);     //true
            System.out.println(file6 + "是否为文件:" + isFile3);     //false
    
    
            System.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);       //false
            System.out.println(file8 + "是否为存在:" + exists2);       //true
            System.out.println(file9 + "是否为存在:" + exists3);       //false
    
    
            System.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);  //0
            System.out.println(file11 + "的文件大小是:" + length2);  //27
            System.out.println(file12 + "的文件大小是:" + length3);  //0
    
    
            System.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:\QQ
            System.out.println(file14 + "文件的绝对路径是:" + absolutePath2);    //D:\QQ\QQ.txt
            System.out.println(file15 + "文件的绝对路径是:" + absolutePath3);    //D:\JavaCode\code\D:\QQ\QQQQQQ.txt
    
    
            System.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:\QQ
            System.out.println(file17 + "定义文件时使用的路径是:" + path2);  //D:\QQ\QQ.txt
            System.out.println(file18 + "定义文件时使用的路径是:" + path3);  //D:D:\QQ\QQQQQQ.txt
    
    
            System.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);    //QQ
            System.out.println(file20 + "文件的名称,带后缀为:" + name2);    //QQ.txt
            System.out.println(file21 + "文件的名称,带后缀为:" + name3);    //QQQQQQ.txt
    
    
            System.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);   //0
            System.out.println(file23 + "文件的最后修改时间(时间毫秒值)为:" + time2);   //1707927977267
            System.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);      //true
            System.out.println(file2 + " 一个新的空的文件是否成功被创建:" + newFile2);      //false
    
    
            System.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);      //true
            System.out.println(file4 + "单级文件夹是否成功被创建:" + mkdir2);      //false
    
    
            System.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");   //true
            boolean 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);  //true
            System.out.println(file2 + "是否成功被删除:" + delete2);  //true
            System.out.println(file3 + "是否成功被删除:" + delete3);  //true
            System.out.println(file4 + "是否成功被删除:" + delete4);  //false
            System.out.println(file5 + "是否成功被删除:" + delete5);  //true
            System.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表示的路径是需要权限才能访问的文件夹时,返回null
            File[] 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() {
                @Override
                public 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() {
                @Override
                public 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. 进入文件夹

  2. 遍历数组

  3. 判断(判断是否为文件)

  4. 判断(判断是否为文件夹)

4.1 示例1:创建文件夹

需求:在当前模块下的aaa文件夹中创建一个a.txt文件

  • 代码示例
    package text.text03;
    
    import java.io.File;
    import java.io.IOException;
    
    /*练习1:创建文件夹
    
    需求:在当前模块下的aaa文件夹中创建一个a.txt文件
     */
    public class text06 {
        public static void main(String[] args) throws IOException {
            //创建a.txt的父级路径
            File file = new File("codeText01\\aaa");
            //创建父级路径
            boolean mkdir = file.mkdir();
            //将父级路径与子级路径进行拼接
            File file1 = new File(file, "a.txt");
            //创建文件
            boolean newFile = file1.createNewFile();
            if (newFile) {
                System.out.println("创建成功!路径为:" + file1);
            } else {
                System.out.println("创建失败!该文件已经存在,路径为:" + file1);
            }
        }
    }
    
    
  • 输出结果
    在这里插入图片描述

4.2 示例2:查找文件(不考虑子文件夹)

需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影(暂时不需要考虑子文件夹)

  • 代码示例
    package text.text03;
    
    import java.io.File;
    
    /* 练习2:查找文件(不考虑子文件夹)
    
    需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影(暂时不需要考虑子文件夹)
     */
    public class text07 {
        public static void main(String[] args) {
            //创建文件
            File file = new File("D:\\QQ");
            //调用方法
            boolean b = haveAvi(file);
            if (b) {
                System.out.println("存在以avi结尾的电影");
            } else {
                System.out.println("不存在以avi结尾的电影");
            }
        }
    
        //方法
        public static boolean haveAvi(File file) {
            File[] files = file.listFiles();
            //遍历文件数组
            for (File f : files) {
                if (f.isFile() && f.getName().endsWith(".avi")) {
                    return true;
                }
            }
            return false;
        }
    }
    
  • 输出结果
    在这里插入图片描述

4.3 示例3:查找文件(考虑子文件夹)

需求:找到电脑中所有以avi结尾的电影。(需要考虑子文件夹)

  • 代码示例
    package text.text03;
    
    import java.io.File;
    
    /* 练习3:查找文件(考虑子文件夹)
    
    需求:找到电脑中所有以avi结尾的电影。(需要考虑子文件夹)
    
    思想:把大问题拆分,拆到某一个文件夹中不包含其他文件夹为止
    
    套路:1.进入文件夹
         2.遍历数组
         3.判断
         4.判断
     */
    public class text08 {
        public static void main(String[] args) {
            findDrive();
        }
    
        //创建方法,获取所有的盘符
        public static void findDrive() {
            //获取所有的盘符
            File[] files = File.listRoots();
            //遍历数组
            for (File file : files) {
                haveAvi(file);
            }
        }
    
        //创建方法,判断该盘符中是否含有以avi结尾的电影
        public static void haveAvi(File file) {
            //进入文件夹(将该文件夹的所有的内容存入文件数组)
            File[] files = file.listFiles();
            //因为调用listFiles()方法,当盘符中有隐藏的文件或文件夹时,会null
            if (files != null) {
                //遍历数组
                for (File f : files) {
                    //判断该内容是文件
                    if (f.isFile()) {
                        //判断是否为avi结尾的电影
                        if (f.getName().endsWith(".avi")) {
                            System.out.println(f);
                        }
                    }
                    //判断该内容是文件夹
                    else {
                        //递归调用haveAvi方法
                        haveAvi(f);
                    }
                }
            }
        }
    
    }
                         
    
  • 输出结果
    在这里插入图片描述

4.4 示例4:删除多级文件夹

练习4:删除多级文件夹

  • 代码示例
    package text.text03;
    
    import java.io.File;
    
    /*练习4:删除多级文件夹
    
    思路: 如果我们要删除一个有内容的文件夹
    	   1.先删除文件夹里面所有的内容
           2.再删除自己
    
    套路:1.进入文件夹
         2.遍历数组
         3.判断
         4.判断
     */
    public class text09 {
        public static void main(String[] args) {
            //创建文件对象
            File file = new File("D:\\File\\file");
            entry(file);
        }
    
        //创建进入文件夹的方法
        public static void entry(File file) {
            //创建文件数组
            File[] files = file.listFiles();
            //遍历数组
            for (File file1 : files) {
                //判断,如果是文件,直接删除
                if (file1.isFile()) {
                    boolean delete = file1.delete();
                    System.out.println(delete);
                }
                //判断,如果是文件夹,递归调用
                else {
                    entry(file1);
                }
            }
            //删除本文件夹
            boolean delete = file.delete();
            System.out.println(delete);
        }
    }
    
    
  • 输出结果
    在这里插入图片描述

4.5 示例5:统计一个文件夹的总大小

练习5:统计一个文件夹的总大小

  • 代码示例
    package text.text03;
    
    import java.io.File;
    
    /*
    练习5:统计一个文件夹的总大小
     */
    public class text10 {
        public static void main(String[] args) {
            //创建文件对象
            File file = new File("D:\\QQ");
            //调用方法
            long len = getLen(file);
            System.out.println(file + "文件夹的总大小为:" + len);
        }
        /*
        * 作用:
        *       统计一个文件夹的总大小
        * 参数:
        *       表示要统计的那个文件夹
        * 返回值:
        *       统计之后的结果
        *
        * 文件夹的总大小:
        *       文件夹里面所有文件的大小
         */
    
        public static long getLen(File file) {
            //定义变量记录总大小
            long sum = 0;
            //创建数组(进入文件夹)
            File[] files = file.listFiles();
            //因为调用listFiles()方法,当盘符中有隐藏的文件或文件夹时,会null
            if (files != null) {
                //遍历数组
                for (File file1 : files) {
                    //判断是否为文件,是则计算大小
                    if (file1.isFile()) {
                        sum = sum + file1.length();
                    }
                    //判断是否为文件夹,是则递归
                    else {
                        //必须有变量来接受递归后方法返回的值
                        sum = sum + getLen(file1);
                    }
                }
            }
            return sum;
        }
    }
    
  • 输出结果
    在这里插入图片描述

4.6 示例6:统计大小

需求:统计一个文件夹的总个数并进行打印

  • 格式如下:
    • txt:几个
    • doc:几个
    • pg:几个
  • 代码示例
    package text.text03;
    
    import java.io.File;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    /* 练习6:统计大小
    
    需求:统计一个文件夹的总个数并进行打印
        格式如下:txt:几个
                doc:几个
                jpg:几个
    
    思路:File + 递归 + Map集合
     */
    public class text11 {
        public static void main(String[] args) {
            File file = new File("D:\\File\\file");
            HashMap<String, Integer> hashMap = getSum(file);
            System.out.println(hashMap);
            //遍历hashMap集合
            Set<Map.Entry<String, Integer>> entries = hashMap.entrySet();
            for (Map.Entry<String, Integer> entry : entries) {
                String key = entry.getKey();
                int value = entry.getValue();
                System.out.println(key + " : " + value + "个");
            }
        }
    
    
        /*
         * 作用:
         *       统计一个文件夹中每种文件的个数
         * 参数:
         *       要统计的那个文件夹
         * 返回值:
         *       用来统计map集合
         *       键:后缀名 值:次数
         *
         *       a.txt
         *       a.a.txt
         *       aaa(不需要统计的)
         *
         *
         * */
        public static HashMap<String, Integer> getSum(File file) {
            //创建Map集合,键为:文件后缀;值为:个数
            HashMap<String, Integer> hm = new HashMap<>();
    
            //创建File对象数组
            File[] files = file.listFiles();
    
            //遍历数组
            for (File file1 : files) {
    
                //判断file1是文件还是文件夹
                if (file1.isFile()) {    //如果是文件,则判断后缀名,并统计个数
                    //将文件名字通过 . 进行分割,获取后缀名
                    String[] split = file1.getName().split("\\.");
                    if (split.length >= 2) { //如果split.length==1,则表明没有后缀名,不需要统计
                        //获取后缀名
                        String getName = split[split.length - 1];
    
                        //判断hm集合中是否存在该后缀名
                        if (hm.containsKey(getName)) {    //如果存在,则获取集合值的值,获取该后缀名的数量并+1
                            //获取集合的值
                            int count = hm.get(getName);
                            //将值+1
                            count++;
                            //重新添加进集合
                            hm.put(getName, count);
                        } else {     //如果不存在,则添加进集合
                            hm.put(getName, 1);
                        }
                    }
                }
                //如果是文件夹,则递归调用
                else {
                    HashMap<String, Integer> fileHM = getSum(file1);  //必须有集合来接收文件夹中的后缀名的数量
    
                    //将文件夹中的后缀名数量添加进hm集合
                    //遍历fileHM集合
                    Set<Map.Entry<String, Integer>> entries = fileHM.entrySet();
                    for (Map.Entry<String, Integer> entry : entries) {
                        //获取fileHM集合的键
                        String key = entry.getKey();
                        //获取fileHM集合的值
                        int value = entry.getValue();
    
                        //将fileHM集合中键的值添加进hm中
                        //判断fileHM集合中的后缀名是否在hm集合中存在
                        if (hm.containsKey(key)) {     //存在,在hm中将该后缀名的数量添加上fileHM的数量
                            //获取hm中该后缀名的数量
                            int count = hm.get(key);
                            count = count + value;
                            hm.put(key, count);
                        } else {   //不存在,则将fileHM的该后缀名以及数量添加进hm集合
                            hm.put(key, value);
                        }
                    }
                }
            }
            return hm;
        }
    }
    
    
  • 输出结果
    在这里插入图片描述

5. 注意事项

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

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

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

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

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

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

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

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

相关文章

【数据结构】LRU Cache

文章目录 LRUCache LRUCache 1. LRUCache是一种缓存的替换技术&#xff0c;在CPU和main memory之间根据计算机的局部性原理&#xff0c;往往会采用SRAM技术来构建CPU和主存之间的高速缓存&#xff0c;DRAM(dynamic random access memory)用于构建主存&#xff0c;LRUCache这种…

Rust 数据结构与算法:3栈:用栈实现符号匹配

1、符号匹配 如&#xff1a; (56)(78)/(43)、{ { ( [ ] [ ])}}、(ab)(c*d)func() 等各类语句的符号匹配。 这里我们关注的不是数字而是括号&#xff0c;因为括号更改了操作优先级&#xff0c;限定了语言的语义&#xff0c;这是非常重要的。如果括号不完整&#xff0c;那么整个…

Ps:焦点堆栈

焦点堆栈 Focus Stacking是一种摄影和图像处理技术&#xff0c;通过合并多张在不同焦距拍摄的照片来创建一张具有更大景深的图像&#xff0c;特别适用于微距摄影、风景摄影和任何需要在整个场景中保持尖锐对焦的情况。 ◆ ◆ ◆ 拍摄注意事项 1、使用三脚架 为了确保图像之间…

STM32——OLED菜单(二级菜单)

文章目录 一.补充二. 二级菜单代码 简介&#xff1a;首先在我的51 I2C里面有OLED详细讲解&#xff0c;本期代码从51OLED基础上移植过来的&#xff0c;可以先看完那篇文章&#xff0c;在看这个&#xff0c;然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…

医院三基怎么搜题答案? #学习方法#学习方法#微信

在大学生的学习过程中&#xff0c;遇到难题和疑惑是常有的事情。然而&#xff0c;随着互联网的普及和技术的发展&#xff0c;搜题和学习软件成为了大学生们解决问题的利器。今天&#xff0c;我将向大家推荐几款备受大学生喜爱的搜题和学习软件&#xff0c;帮助我们更好地应对学…

VMware虚拟机网络配置

VMware虚拟机网络配置 桥接模式NAT网络 桥接模式 桥接模式其实就是借助你宿主机上的网卡进行联网和通信&#xff0c;所以相当于虚拟机和宿主机平级&#xff0c;处于同一个网段中。 配置要点&#xff1a; 注意选择正确的宿主机网卡 查看宿主机的网络信息&#xff0c;这些信息指…

VMwareWorkstation17.0虚拟机安装Windows2.03

VMwareWorkstation17.0虚拟机安装Windows2.03 第一篇 下载Windows2.03第二篇 配置Windows2.03虚拟机机器环境第三篇 启动Windows2.03系统 第一篇 下载Windows2.03 1.Windows2.0原版软盘下载地址是 暂不提供&#xff0c;后续更新 2.Windows2.03虚拟机镜像下载地址是 Windows2…

ChatGPT高效提问—prompt实践(白领助手)

ChatGPT高效提问—prompt实践&#xff08;白领助手&#xff09; ​ 随着社会的不断发展&#xff0c;白领的比例越来越高。白领的工作通常较为繁忙&#xff0c;需要管理复杂的项目。工作量大、要求高、任务紧急&#xff0c;时间分配不当部分可能导致工作效率低下&#xff0c;任…

云备份项目:在云端保护您的数据【二、开发】

☘️过度的信息对一个过着充实生活的人来说&#xff0c;是一种不必要的负担☘️ 文章目录 前言工具类实现文件实用工具类代码实现 Json实用工具类代码实现 服务端单例配置类系统配置信息单例配置类 数据管理类数据信息数据管理 热点管理类业务处理类 客户端数据管理类文件备份类…

基于微信小程序的智能社区服务小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

嵌入式中UART通信的方法

UART是一种异步全双工串行通信协议&#xff0c;由 Tx 和 Rx 两根数据线组成&#xff0c;因为没有参考时钟信号&#xff0c;所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数&#xff0c;从而按照相同的速率进行通信。 异步通信以一个字符为传输单位…

HDR 摄影

HDR 摄影&#xff0c;即高动态范围 High Dynamic Range摄影&#xff0c;旨在通过合并不同曝光值的照片来捕捉场景中从最亮到最暗部分的全部细节。 这种技术对于在一个图像中展现广泛的亮度范围特别有用&#xff0c;尤其是在自然光线条件下&#xff0c;如直射日光或阴影区域&…

[BUUCTF]-PWN:ciscn_2019_final_3解析

查看保护 RELRO保护为FULL&#xff0c;got表不可修改&#xff0c;只能修改hook表了 查看ida 这里的大致功能为alloc创建堆块&#xff08;可填充内容&#xff09;、free释放堆块&#xff08;但是不清空指针&#xff09; 值得注意的就是创建堆块大小不可以超过0x78&#xff08;…

HTB pwn Evil Corp

程序分析 初始化功能 申请了一块正常块和一块可以执行shellcode的空间 登录 向正常块写入数据 字符宽度转换 漏洞分析 所有的输入都使用了fgetws函数这个函数,这个函数会把整个串的每一个字符按最低两个宽来接收输入,如果存在unicode32等等更宽的字符这个函数会把每个字符都…

积分(一)——复化梯形积分(C++)

梯形积分 设f(x)在[a,b]上连续&#xff0c;若要计算其积分&#xff0c;则 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_a^b f(x)dx F(b) - F(a) ∫ab​f(x)dxF(b)−F(a) 其中F(x)为f(x)的原函数&#xff0c;但是计算机直接计算出该积分函数比较困难&#xff0c;因此需要近…

六、Datax通过json字符串运行

Datax通过json字符串运行 一、场景二、代码实现 一、场景 制作一个web应用&#xff0c;在页面上配置一个json字符串&#xff0c;保存在数据库里面。在执行json的时候&#xff0c;动态在本地创建一个json文件后执行&#xff0c;并识别是否成功&#xff0c;将执行过程保存在数据…

fgets的使用方法详解

fgets的使用 文章目录 fgets的使用前言&#xff08;吹水&#xff0c;不看也罢&#xff09;fgets 的基本语法使用示例fgets() 对输入的处理的特点gets() 与 fgets() 的主要区别 总结 前言&#xff08;吹水&#xff0c;不看也罢&#xff09; 鼠鼠今天在B站上大学的时候&#xff…

离散傅里叶变换

目标 我们将寻求以下问题的答案&#xff1a; 什么是傅里叶变换&#xff0c;为什么要使用它&#xff1f;如何在OpenCV中做到这一点&#xff1f;使用以下函数&#xff1a;copyMakeBorder&#xff08;&#xff09; &#xff0c; merge&#xff08;&#xff09; &#xff0c; dft…

蓝桥杯:C++排列与组合

排列是暴力枚举时的常见操作。有以下两种情况。 C的 next_permutation()是全排列函数&#xff0c;只能输出序列中所有元素的全排列。 本节将给出手写排列和组合的代码。因为在很多场合中不能使用系统自带的排列函数&#xff0c;所以需要自己编写。 全排列函数&#xff1a;nex…

Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试

2023年10月&#xff0c;我们发表了一篇关于TimeGPT的文章&#xff0c;TimeGPT是时间序列预测的第一个基础模型之一&#xff0c;具有零样本推理、异常检测和共形预测能力。 虽然TimeGPT是一个专有模型&#xff0c;只能通过API访问。但是它还是引发了对时间序列基础模型的更多研…