遍历文件夹的方法 - 极悦
首页 课程 师资 教程 报名

遍历文件夹的方法

  • 2022-08-01 09:59:36
  • 476次 极悦

遍历文件夹的方法是什么?极悦小编来告诉大家。

1.递归方式遍历文件夹:

package file; 
import java.io.File;
import java.util.Scanner; 
/**
 * 递归遍历文件夹
 * 若输入的为文件,则直接输出该文件名,输入的为文件夹,则输出其中的所有文件
 * @author Administrator
 *
 */
public class TraverseFolderByRecursion { 
    public static void traverseFolder(String path, int fileLevel) {
        File file = new File(path);
        // int fileNum =0;
        /** 判断文件是否存在 */
        if (file.exists()) {
            /** 判断获取的为文件还是文件夹 */
            if (file.isDirectory()) {
                File[] fileName = file.listFiles();
                /** 文件夹是否为空,不为空则遍历 */
                if (null == fileName || fileName.length == 0) {
                    if (fileLevel == 0) {
                        System.out.println("该文件夹为空!");
                    }
                } else {
                    fileLevel++;
                    for (File f : fileName) {
                        System.out.println(f.getName());
                        traverseFolder(f.getAbsolutePath(), fileLevel);
                    }
                }
            } else {
                if (fileLevel == 0) {
                    System.out.println(file.getName());
                }
            }
        } else {
            System.out.println("该文件或文件夹不存在!");
        }
    } 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        String path = scanner.nextLine();
        // System.out.println("所有文件及文件夹:");
        traverseFolder(path, 0);
    }
}

2.利用栈遍历文件夹:

package file; 
import java.io.File;
import java.util.Scanner;
import java.util.Stack; 
/**
 * 利用栈遍历文件夹
 * 若输入的为文件,则直接输出该文件名,输入的为文件夹,则输出其中的所有文件
 * @author Administrator path:文件或文件夹路径 fileLevel:目录层级,输入的默认层级为第0层
 *
 */
public class TraverseFolderByStack { 
    public static void traverseFolder(String path, int fileLevel) {
        File dir = new File(path);
        if (!dir.isDirectory()) {
            System.out.println(dir.getName());
        } else {
            if (dir.exists()) {
                Stack<File> stack = new Stack();
                /** 一级目录入栈 */
                stack.push(dir);
                File file = null;
                /** 栈不为空时 */
                while (stack.size() > 0) {
                    /** 获取栈顶元素值并将其移除 */
                    if (fileLevel == 0) {
                        /** 第0层即输入的文件夹目录直接出栈 */
                        file = stack.pop();
                    } else {
                        /** 非第0层即子目录出栈并输出其文件名 */
                        file = stack.pop();
                        System.out.println(file.getName());
                    }
                    File[] files = file.listFiles();
                    /**文件夹不为空时*/
                    if (null != files && files.length > 0) {
                        for (File f : files) {
                            /** 元素为目录即文件夹时入栈 */
                            if (f.isDirectory()) {
                                stack.push(f);
                                fileLevel++;
                            } else {
                                /** 元素为文件时直接输出 */
                                System.out.println(f.getName());
                                fileLevel++;
                            }
                        }
                    }
                }
                /** 输入的目录为空时 */
                if (fileLevel == 0) {
                    System.out.println("该文件夹为空!");
                }
            } else {
                System.out.println("该文件或文件夹不存在!");
            }
        }
    } 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        String path = scanner.nextLine();
        // System.out.println("所有文件及文件夹:");
        traverseFolder(path, 0); 
    } 
}

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交