【请教】使用递归的创建多层文件夹
请教,按照以下代码我可以创建2层的文件夹,第一层文件名称为0-9,0-9的每一个文件夹中又是0-9,这是第二层,如果我想创建多层文件使用递归可否实现?```java
```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:21
大佬,deep--是死循环,改为--deep之后和想象的不太一样;只能执行完0这一层;
改成deep-1试试? 关谷神奇 发表于 2021-4-13 23:14
可否有程序实现
类似的东西我似乎写过很多,生成目录索引的时候经常用到,算是家常便饭了
下面代码应该能递归创建3层目录,我直接打的,没调试,你自己看看有没有问题
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);
}
}
}
可以,在函数里传入当前目录即可 本帖最后由 涛之雨 于 2021-4-13 23:34 编辑
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
```java
/**
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:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
new File(String filename);
Java是纯面向对象语言,很少出现修改传入参数的情况 涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
层数用自减比较好,这样可以满足多个地方都调用该函数且层数要求不一样的情况 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:39 编辑
涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
{:301_1002:} 也可以直接用api创建多级目录
侃遍天下无二人 发表于 2021-4-12 22:48
可以,在函数里传入当前目录即可
可否有程序实现 涛之雨 发表于 2021-4-12 23:28
递归的时候就是调用自己,这种应该两个参数就差不多了,
一个参数是当前目录,一个参数控制递归的层数
大佬,deep--是死循环,改为--deep之后和想象的不太一样;只能执行完0这一层;
页:
[1]
2