zoukankan      html  css  js  c++  java
  • 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;
                }
            }
        }
    }
  • 相关阅读:
    KVM环境搭建RHCS
    修改virt-manager默认磁盘格式
    前端基础之html
    并发编程
    网络编程
    常用模块
    模块与包
    迭代器、生成器、面向过程编程
    闭包函数和装饰器
    函数
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10145467.html
Copyright © 2011-2022 走看看