46练习:输出指定目录下的所有文件名称

Posted zhuifeng-mayi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了46练习:输出指定目录下的所有文件名称相关的知识,希望对你有一定的参考价值。

问题:从键盘接收一个路径,将这个路径下的所有文件和文件夹的名字按照层级打印。
例如:

monkey1024
          java
              XXX.java
              XXX.jpg
          php
              XXX.php
          readme.txt

分析:获取路径File对象中的File数组
遍历数组,取得File对象
打印文件或文件夹的名字
如果是一个文件夹的话,使用递归重复上面的操作

代码:

package com.monkey1024.exercise;

import java.io.File;
import java.util.Scanner;


public class FileNames {

    //用来记录缩进的次数
    private static int count = 0;

    public static void main(String[] args) {

        File file = getFile();

        getFileNames(file);
    }

    //每次调用该方法时,说明进入到一个新的文件夹的内部,需要增加一个缩进
    private static void getFileNames(File file) {
        //获取路径File对象中的File数组
        File[] fileArray = file.listFiles();

        //遍历数组,取得File对象
        for(int i=0; i<fileArray.length; i++){

            //通过遍历count来控制打印几个缩进
            for(int j=0; j<count; j++){
                System.out.print("	");
            }

            //打印文件或文件夹的名字
            System.out.println(fileArray[i]);

            //数组遍历完最后一个File对象时,说明当前文件夹已经遍历结束,需要做自减运算
            if(i == fileArray.length-1 && !fileArray[i].isDirectory()){
                count--;
            }

            //如果是一个文件夹的话,使用递归重复上面的操作
            if(fileArray[i].isDirectory()){
                count++;
                getFileNames(fileArray[i]);
            }

        }
    }

    //获取用户输入路径的File对象
    private static File getFile() {

        System.out.println("请输入一个文件夹路径:");

        Scanner sc = new Scanner(System.in);
        //获取用户输入的路径,用户输入的路径有可能是错误的,需要进行判断
        while(true){
            String input = sc.nextLine();
            File file = new File(input);
            if(!file.exists()){
                System.out.println("您输入的文件路径有误,请重新输入文件路径:");
            }else if(file.isFile()){
                //如果用户输入的路径是一个文件
                System.out.println("您输入的路径是一个文件,请输入一个文件夹的路径");
            }else{
                return file;
            }
        }
    }
}

 





以上是关于46练习:输出指定目录下的所有文件名称的主要内容,如果未能解决你的问题,请参考以下文章

JAVA输出指定目录下的子目录和子文件

php如何显示,排列指定文件夹中所有文件夹名

find命令基本用法及练习

33.2 案例:输出指定目录下的所有java文件名(包含子目录)

Python中如何遍历指定目录下的所有文件?

SHELL编程练习-复制指定文件(保持文件所在目录结构)