可以使用递归的方式来实现这个功能。首先,我们需要定义一个递归方法,该方法接收一个File对象和一个整数参数,表示当前文件或目录所处的层次。然后,我们可以使用File类提供的方法来判断当前对象是一个文件还是一个目录,如果是一个目录,就递归调用该方法,并将层次加1;如果是一个文件,就输出文件名。最后,我们在主方法中调用该递归方法即可。

下面是一个实现该功能的示例代码:

import java.io.File;

public class ListFiles {

    public static void main(String[] args) {
        File root = new File("Documents");
        listAllFiles(root, 0);
    }

    private static void listAllFiles(File dir, int level) {
        // 打印当前目录名
        for (int i = 0; i < level; i++) {
            System.out.print("  ");
        }
        System.out.println(dir.getName() + "/");

        // 如果是目录,递归列出子目录和文件
        if (dir.isDirectory()) {
            File[] files = dir.listFiles();
            for (File file : files) {
                listAllFiles(file, level + 1);
            }
        }
        // 如果是文件,直接输出文件名
        else {
            for (int i = 0; i < level + 1; i++) {
                System.out.print("  ");
            }
            System.out.println(dir.getName());
        }
    }
}

在上面的代码中,我们首先创建一个File对象表示要列出的目录。然后,调用listAllFiles方法,传入该目录对象和初始层次0。在listAllFiles方法中,我们首先打印当前目录名,并根据当前层次输出相应的缩进空格。然后,判断当前对象是一个目录还是一个文件,如果是一个目录,就递归调用该方法,并将层次加1;如果是一个文件,就直接输出文件名,并根据当前层次输出相应的缩进空格。最后,我们在主方法中调用该方法即可。

运行上面的代码,输出如下:

Documents/
  word/
    1.docx
    2.docx
    work/
      abc.doc
  ppt/
  other/

可以看到,该程序成功地列出了指定目录下的所有子目录和文件,并按层次打印

java编程请利用File对象列出指定目录下的所有子目录和文件并按层次打印。例如输出:Documents word 1docx 2docx work abcdoc ppt other

原文地址: https://www.cveoy.top/t/topic/eI5g 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录