java语言递归遍历输出D盘下的所有文件夹及所有目录
通过isFile(文件)和isDirectory(文件夹)方法来判断读取的是文件还是文件夹,如果得到的是文件夹,就递归调用recursion()方法,如果得到的是文件,就将其加入fileList中,最后测试的时候遍历fileList下的所有文件。
第一种方法:
public class IOTest {
public static void main(String[] args) {
//查看是否有D盘
String roots = Arrays.toString(File.listRoots());
if (roots.contains("D:\\")) {
System.out.println("有D盘,正在执行遍历操作");
//遍历我们已经知道它的根目录为D盘了!!
// 我们现在需要 :如果D盘是目录文件的话,那么我们递归,如果它不是根目录的话,跳出递归
File file = new File("D:\\");
if (file.exists()) {
System.out.print("文件夹:"+Arrays.toString(file.list()));
System.out.println(" ");
}
else
System.out.println("该文件不存在" + file.getAbsolutePath());
recursion(file);
}
else {
System.out.println("没有D盘!!!!");
}
}
private static void recursion(File file) {
if (file.isDirectory()) {
System.out.println(file.getName());
File[] files = file.listFiles();
if (files != null) {
for (File file1 : files) {
recursion(file1);
}
}
}
}
}
结果截图:
第二种方法:
public class IOTest {
public static void main(String[] args) {
String roots = Arrays.toString(File.listRoots());
if (roots.contains("D:\\")) {
System.out.println("有D盘,正在执行遍历操作");
}
File file = new File("D:\\");
recursion(file);
}
public static void recursion(File file){
if (file.exists()) {
File[] files = file.listFiles();
if (files==null ) {
System.out.println("文件夹下无目录(空)!");
} else {
for (File file1 : files) {
if (file1.isDirectory()) {
System.out.println("文件夹:" + file1.getAbsolutePath());
recursion(file1);
} else {
System.out.println("文件:" + file1.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
}
结果截图: