Java的编程之旅39——文件

目录

1.文件的构造方法

2.目录的创建

3.文件的常用方法

1.判断是否为目录

2.判断是否是文件

3.判断文件是否存在

4.返回绝对路径

5.返回给定路径的字符串

6.返回File封装的文件或路径名

7.返回文件列表

8.返回文件对象

4.删除文件

5.文件的递归操作

1.什么是递归

2.file目录的递归操作


1.文件的构造方法

方法1:

File file01 = new File("./myDir/myText.txt");
System.out.println(file01);

这段代码创建了一个File对象,表示文件路径为"./myDir/myText.txt"。 然后使用System.out.println()方法打印了这个File对象,输出结果为文件的路径字符串"./myDir/myText.txt"。

方法2:

File file02 = new File("./myDir","myTest.txt");
System.out.println(file02);

这段代码创建了一个File对象,其中构造函数的参数分别为"./myDir"和"myTest.txt"。 通过这种方式创建File对象,第一个参数指定了文件所在的目录路径,第二个参数指定了文件名。 然后使用System.out.println()方法打印了这个File对象,输出结果为文件的路径字符串"./myDir/myTest.txt"。

方法3:

File file03 = new File("./myDir");
File file04 = new File(file03,"myTest.txt");
System.out.println(file04);

这段代码创建了两个File对象。 首先,创建了一个File对象file03,其构造函数的参数为"./myDir",指定了文件所在的目录路径。 然后,使用file03作为第一个参数,"myTest.txt"作为第二个参数,创建了另一个File对象file04。 最后,使用System.out.println()方法打印了file04对象,输出结果为文件的路径字符串"./myDir/myTest.txt"。

2.目录的创建

方法1:

File file01 = new File("./myTest.txt");
System.out.println(file01.createNewFile());

这段代码创建了一个File对象file01,它代表了一个名为"myTest.txt"的文件。 调用file01的createNewFile()方法,该方法会尝试在文件系统中创建一个名为"myTest.txt"的新文件。 createNewFile()方法返回一个boolean值,表示文件是否成功创建。如果文件创建成功,则返回true;如果文件已经存在或者发生了错误,则返回false。 在这段代码中,System.out.println()方法会打印出createNewFile()方法的返回值,即文件创建的结果。如果文件创建成功,会打印出true;如果文件已经存在或者创建失败,会打印出false。

方法2:

File file02 = new File("./myTest.txt");
System.out.println(file02.mkdir());//文件已存在返回值为False

这段代码创建了一个File对象file02,它代表了一个名为"myTest.txt"的目录(而不是文件)。 调用file02的mkdir()方法,该方法会尝试在文件系统中创建一个名为"myTest.txt"的新目录。 mkdir()方法返回一个boolean值,表示目录是否成功创建。由于文件已经存在,并且目标路径名是一个文件而不是目录,所以创建目录失败,返回false。 在这段代码中,System.out.println()方法会打印出mkdir()方法的返回值,即目录创建的结果。由于目录创建失败,会打印出false。

方法3:

File file03 = new File("./h/e/l/l/o");
System.out.println(file03.mkdirs());//创建多级目录

这段代码创建了一个File对象file03,它代表了一个名为"h/e/l/l/o"的目录(而不是文件)。 调用file03的mkdirs()方法,该方法会尝试在文件系统中创建多级目录,即创建"h"目录,然后在"h"目录下创建"e"目录,依此类推,直到创建整个目录路径"h/e/l/l/o"。 mkdirs()方法返回一个boolean值,表示目录是否成功创建。由于目录路径中的所有目录都不存在,所以会尝试创建这些目录,并最终创建成功,返回true。 在这段代码中,System.out.println()方法会打印出mkdirs()方法的返回值,即目录创建的结果。由于目录创建成功,会打印出true。

3.文件的常用方法

1.判断是否为目录

File f = new File("./myTest.txt");
System.out.println(f.isDirectory());

2.判断是否是文件

System.out.println(f.isFile());

3.判断文件是否存在

System.out.println(f.exists());

4.返回绝对路径

System.out.println(f.getAbsolutePath());

5.返回给定路径的字符串

 System.out.println(f.getPath());

6.返回File封装的文件或路径名

System.out.println(f.getName());

7.返回文件列表

        File file = new File("./");
        System.out.println(Arrays.toString(file.list()));
        String[] fileName = file.list();
        for (String f:
             fileName) {
            System.out.println(f);
        }

这段代码创建了一个File对象file,它代表当前目录(即"./")。 调用file的list()方法,该方法会返回当前目录中的所有文件和文件夹的名称数组。 通过Arrays.toString()方法将返回的数组转换为字符串,并通过System.out.println()方法打印出来,这样就会打印出当前目录中的所有文件和文件夹的名称。 接下来,将返回的文件和文件夹名称数组赋值给一个名为fileName的字符串数组。 然后使用for-each循环遍历fileName数组,将每个文件和文件夹的名称依次打印出来。 通过这段代码,可以获取并打印当前目录中的所有文件和文件夹的名称。

8.返回文件对象

        File[] files = file.listFiles();
        for (File f:
             files) {
            System.out.println(f);
        }

这段代码通过调用file的listFiles()方法,返回一个File对象数组,该数组包含了当前目录中的所有文件和文件夹。 使用for-each循环遍历files数组,将每个File对象依次打印出来。 通过这段代码,可以获取并打印当前目录中的所有文件和文件夹的File对象。

4.删除文件

文件创建使用fileCreate()方法

文件删除使用fileDelete()方法

    public static void main(String[] args) {
        File file = new File("./mytest.txt");
        fileCreate(file);
        fileDelete(file);
    }

    /**
     * 文件创建方法
     * @param file
     */
    public static void fileCreate(File file){
        if(!(file.exists())){
            System.out.println("文件不存在");
        }else{
            System.out.println(file.mkdir()+"文件创建成功");
        }
    }
    /**
     * 文件删除方法
     * @param file
     */
    public static void fileDelete(File file){
        if(file.exists()){
            System.out.println("文件存在");
            if(file.delete()){
                System.out.println("文件删除成功");
            }else{
                System.out.println("文件删除失败");
            }
        }else{
            System.out.println("文件不存在");
        }
    }

这段代码是一个Java程序,其中包含了一个主方法main和两个静态方法fileCreatefileDelete

main方法中,首先创建了一个File对象,表示一个名为"mytest.txt"的文件。然后依次调用fileCreatefileDelete方法。

fileCreate方法用于创建文件。首先判断文件是否存在,如果不存在,则打印"文件不存在"的提示信息。如果文件存在,则调用mkdir方法创建一个与该文件同名的目录,并打印"文件创建成功"的提示信息。

fileDelete方法用于删除文件。首先判断文件是否存在,如果存在,则打印"文件存在"的提示信息。然后调用delete方法删除文件,并根据删除结果打印"文件删除成功"或"文件删除失败"的提示信息。如果文件不存在,则打印"文件不存在"的提示信息。

总的来说,这段代码的作用是判断文件是否存在,并进行文件的创建和删除操作,并输出相应的提示信息。

5.文件的递归操作

1.什么是递归

递归是一种解决问题的方法,它通过将一个问题分解成一个或多个与原问题类似但规模更小的子问题来解决。在递归过程中,解决子问题的方法通常是调用自身的函数。

递归的基本思想是将原问题转化为更小规模的同类问题,直到问题规模足够小,可以直接求解。然后将子问题的解合并起来,得到原问题的解。

在递归过程中,每次递归调用都会将问题的规模减小,这样递归就会逐级深入,直到达到递归的基本情况,也就是停止递归的条件。

递归的特点包括:

  1. 递归调用自身方法,形成递归链;
  2. 递归问题必须有一个或多个递归出口,即停止递归的条件;
  3. 递归问题必须有一个递归参数或递归变量,用来控制递归过程中问题规模的变化;
  4. 递归方法的返回值类型通常是与递归参数或递归变量相关的。

递归在算法和程序设计中广泛应用,尤其是在解决树、图和复杂的数据结构问题时常用到。但需要注意,递归的使用要小心控制递归的深度和递归链的长度,以防止出现栈溢出等问题。

    public static void main(String[] args) {
        System.out.println(mySum(3));
    }    
    public static int mySum(int n){
        if(n == 1)
            return 1;
        return n+mySum(n-1);
    }

这段代码是一个递归方法的示例,它计算从1到n的累加和。

主函数中调用了mySum方法,并输出了mySum(3)的结果。

在mySum方法中,首先判断n是否等于1,如果是,则直接返回1,作为递归的终止条件。如果不是,则执行递归调用mySum(n-1),将n减1传入递归方法中,再将递归方法的结果与n相加并返回。

递归方法的实现思路是将问题分解为更小规模的子问题,并通过递归调用自身来解决子问题。在这个例子中,递归的终止条件是n等于1,也就是最小的子问题,问题规模逐渐减小。每次递归调用时,问题的规模都会减小1,直到达到递归的终止条件。

递归方法的返回值类型是int,表示累加和的结果。在递归调用过程中,每次返回的结果都会与当前的n相加,最终得到从1到n的累加和。

在这个例子中,mySum(3)的计算过程如下: mySum(3) = 3 + mySum(2) = 3 + (2 + mySum(1)) = 3 + (2 + 1) = 6

所以,mySum(3)的结果是6。

2.file目录的递归操作

    public static void main(String[] args) {
        File file = new File("./FileDel");
        getAllFilePath(file);
        delDir(file);
    }

    /**
     * 递归删除文件
     * @param file
     */
    public static void delDir(File file){
        File[] files = file.listFiles();
        if(files != null){
            for (File f:
                 files) {
                if(f.isDirectory()){
                    delDir(f);
                }else{
                    f.delete();
                }
            }
        }
        file.delete();
    }
    /**
     * 遍历文件目录
     * @param file
     */
    private static void getAllFilePath(File file) {
        //获取文件数组
        File[] files = file.listFiles();
        //判断文件是否为空
        if(files != null){
            //遍历文件数组
            for (File f:
                    files ) {
                //判断文件是否为目录 是:获取所有文件路径。否则,获取文件绝对路径
                if(f.isDirectory()){
                    getAllFilePath(f);

                }else{
                    System.out.println(f.getAbsolutePath());
                }
            }
        }

    }

这段代码是一个递归删除文件的示例,并遍历文件目录。

在主函数中,首先创建了一个File对象file,表示要删除的文件目录,然后调用了getAllFilePath方法,遍历并输出了文件目录下的所有文件路径。接着调用了delDir方法,递归删除了该文件目录及其下的所有文件。

在delDir方法中,首先使用file.listFiles()方法获取文件目录下的所有文件和文件夹的数组,然后判断数组是否为空。如果不为空,则使用for循环遍历数组中的每个文件或文件夹。

对于文件夹,调用delDir方法进行递归调用,删除文件夹及其下的所有文件。对于文件,则直接调用f.delete()方法删除文件。

最后,调用file.delete()方法删除主文件目录。

在getAllFilePath方法中,同样使用file.listFiles()方法获取文件目录下的所有文件和文件夹的数组。然后使用for循环遍历数组中的每个文件或文件夹。

对于文件夹,递归调用getAllFilePath方法,获取文件夹下的所有文件路径。对于文件,则直接输出文件的绝对路径f.getAbsolutePath()。

总结来说,这段代码实现了递归删除文件及文件夹的功能,并遍历文件目录下的所有文件路径。

  • 34
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊爆点大男主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值