吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2268|回复: 13
收起左侧

[Java 转载] 【请教】使用递归的创建多层文件夹

[复制链接]
关谷神奇 发表于 2021-4-12 22:08

请教,按照以下代码我可以创建2层的文件夹,第一层文件名称为0-9,0-9的每一个文件夹中又是0-9,这是第二层,如果我想创建多层文件使用递归可否实现?

```java
public class Test5 {
    public static void main(String[]args){
        File file = new File("f:/test");
        Test5 test5 = new Test5();
        test5.fun(file);
    }
    void fun(File file){
        for (int i = 0; i < 10; i++) {
            File file1 = new File(file, "" + i);
            file1.mkdir();
            for (int j = 0; j < 10; j++) {
                File file2 = new File(file1,""+j);
                file2.mkdir();
            }
        }

    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

涛之雨 发表于 2021-4-13 23:35
关谷神奇 发表于 2021-4-13 23:21
大佬,deep--是死循环,改为--deep之后和想象的不太一样;只能执行完0这一层;

改成deep-1试试?
侃遍天下无二人 发表于 2021-4-14 00:01

类似的东西我似乎写过很多,生成目录索引的时候经常用到,算是家常便饭了
下面代码应该能递归创建3层目录,我直接打的,没调试,你自己看看有没有问题
[Java] 纯文本查看 复制代码
public class Test5 {
    public static void main(String[]args){
        String path = "f:/test";
        Test5 test5 = new Test5();
        test5.fun(path,3);
    }
    void fun(String path,int level){
        if(level<=0) return;
        for (int i = 0; i < 10; i++) {
            String dir_path = path + "/" + i;
            File file = new File(dir_path);
            file.mkdir();
            fun(dir_path,level-1);
        }
    }
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
关谷神奇 + 1 + 1 热心回复!

查看全部评分

侃遍天下无二人 发表于 2021-4-12 22:48
涛之雨 发表于 2021-4-12 23:28
本帖最后由 涛之雨 于 2021-4-13 23:34 编辑

递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
/**
file:当前文件夹
deep:深度,控制层数
*/
void fun(File file, int deep){
        if(deep<=0)return;
    for (int i = 0; i < 10; i++) {
        File file = new File(file, "" + i);
        file.mkdir();
        fun(file, deep-1);
    }
}

java不是很熟,不过应该差不多长这样,如果是递归三层就把那个if(deep>2)return;改成if(deep>3)return;



根据五楼的建议,改为递减,至于四楼Java比较深入的内容就不是很了解了。
侃遍天下无二人 发表于 2021-4-12 23:49
涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
[m ...

new File(String filename);
Java是纯面向对象语言,很少出现修改传入参数的情况

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
涛之雨 + 1 + 1 用心讨论,共获提升!

查看全部评分

dunxp 发表于 2021-4-13 00:49
涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
[m ...

层数用自减比较好,这样可以满足多个地方都调用该函数且层数要求不一样的情况

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
涛之雨 + 1 + 1 我很赞同!

查看全部评分

asaSKTY 发表于 2021-4-13 07:32
[Java] 纯文本查看 复制代码
 int fileDirNumber = 9;
 
 void test(){
     File file = new File();
     mkCatalog(fileDirNumber,file);
     
 }
 void mkCatalog(int badge,File file){
        if(badge<0)return;
        File file1 = new File(file, "" + badge);
        file1.mkdir();
        mkCatalog(file1,fileDirNumber);
        mkCatalog(badge-1,file);
    }

    void mkCatalog(File file,int badge){
        if(badge<0) return;
        File file2 = new File(file,""+badge);
        file2.mkdir();
        mkCatalog(file,badge-1);
    }
asaSKTY 发表于 2021-4-13 07:38
本帖最后由 asaSKTY 于 2021-4-13 07:39 编辑
涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
[m ...

b0y 发表于 2021-4-13 08:25
也可以直接用api创建多级目录
 楼主| 关谷神奇 发表于 2021-4-13 23:14
侃遍天下无二人 发表于 2021-4-12 22:48
可以,在函数里传入当前目录即可

可否有程序实现
 楼主| 关谷神奇 发表于 2021-4-13 23:21
涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
[m ...

大佬,deep--是死循环,改为--deep之后和想象的不太一样;只能执行完0这一层;

点评

改成deep-1试试?  详情 回复 发表于 2021-4-13 23:35
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表