控制递归深度
在查询数据库树结构或者目录时,通常需要控制深度,或者到第几层。
import java.io.File;
import java.util.*;
public class test4 {
public static List<File> findFiles(File files, int count) {
List<File> result = new ArrayList<File>();
//判断深度
if (count == 0) {
return result;
}
if (files.listFiles() == null) {
System.out.println("这不是一个有效的目录");
return result;
}
//count在当前函数内是相同,进入到下一级函数,减少1
for(File item : files.listFiles()) {
if(item.isDirectory()) {
result.add(item);
result.addAll(findFiles(item, count - 1));
} else {
result.add(item);
}
}
return result;
}
public static void main(String[] args) {
List<File> files = findFiles(new File("D://test"),2);
for(File i:files) {
System.out.println(i);
}
}
}
解读
count为2时, files.listFiles()拿到的是a1,a2。
从a1进入到下一层函数,把1传进去了。files.listFiles()拿到的是b1,这里的count是1。
从a2进入到下一层函数,也是把1传进去了。files.listFiles()拿到的是b2,这里的count是1。
- test
- a1
- b1
- a2
- b2
参考
https://www.cnblogs.com/allmignt/p/12353726.html
获取目录下的子目录及文件
public void readfile(String filepath) throws FileNotFoundException, IOException {
File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("文件:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
} else if (file.isDirectory()) {
System.out.println("目录:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
readfile(filepath + "\\" + filelist[i]);
}
}
}
参考
java 获取目录和文件名 File 递归_globalcoding的博客-CSDN博客
=========================分割线==========================
以下是紫薯布丁
import java.io.File;
import java.util.*;
public class test4 {
public static List<File> findFiles(File files, int count) {
List<File> result = new ArrayList<File>();
//判断深度
if (count == 0) {
return result;
}
if (files.listFiles() == null) {
System.out.println("这不是一个有效的目录");
return result;
}
//count在当前函数内是相同,进入到下一级函数,减少1
for(File item : files.listFiles()) {
if(item.isDirectory()) {
result.add(item);
result.addAll(findFiles(item, count - 1));
} else {
result.add(item);
}
}
return result;
}
public static void main(String[] args) {
List<File> files = findFiles(new File("D://test"),2);
for(File i:files) {
System.out.println(i);
}
}
}文章来源:https://www.toymoban.com/news/detail-528889.html
public void readfile(String filepath) throws FileNotFoundException, IOException {
File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("文件:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
} else if (file.isDirectory()) {
System.out.println("目录:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
readfile(filepath + "\\" + filelist[i]);
}
}
}
文章来源地址https://www.toymoban.com/news/detail-528889.html
到了这里,关于java 遍历目录 树 递归 控制深度 层数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!