java File按层级目录打印文件夹内容

将指定目录下的所有文件和文件夹的名字按层级关系打印,也可以从控制台获取需要打印的目录

按照如下样式:

world
    1.txt
    2.txt
    3.txt
    4.txt
    5.txt
    6.txt
    hello.txt
        javaSpring.txt
        javaSpring.txt.bak
    新建文件夹
        101.txt
        102.txt
        文件2
        文件夹1
            201.txt

读取盘符根目录时,有些文件不可访问,或者隐藏类型的,不处理会出现空指针异常,需要加入空指针判断的操作



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

//从键盘接收一个路径,按层级结构打印文件夹内容
public class FileTest06 {
    public static int count=1;
    public static void main(String[] args){
       File f= getFile();
       System.out.println( f.getName());
       printFileByLine(f);

    }
    public static void printFileByLine(File f) {
            File[] fileArr = f.listFiles();
            if (fileArr==null) {
                //如果该处文件不可访问,会出现空指针异常,在读取盘符根目录时,一般会出现空指针,要预防
                return ;
            }
            if (fileArr.length==0){
                //判断如果目录为空时,count计数自减,减小缩进
                count--;
                return;
            }
            for (int i = 0; i < fileArr.length; i++) {
                //打印缩进
                for (int j = 0; j < count; j++) {
                    System.out.print("\t");
                }
                //打印文件名字
                if (fileArr[i].isFile()) {
                    System.out.println(fileArr[i].getName());
                }
                //判断,当达到文件的结尾并且最后一个不是文件夹的时候,count自减
                if (i==fileArr.length-1&&!fileArr[i].isDirectory()){
                    count--;
                }
                 if (fileArr[i].isDirectory()) {
                     //如果是文件夹,count自加,扩大缩进
                     System.out.println(fileArr[i].getName() );
                    count++;
                    printFileByLine(fileArr[i]);
                }
            }
        }

    public static File getFile() {
        //从键盘接收一个路径
        Scanner scanner=new Scanner(System.in);
        System.out.println( "请输入一个路径:");
        while(true) {
            String path = scanner.nextLine();
            File file = new File(path);
            if (!file.exists()) {
                System.out.println("输入路径错误,请重新输入");
            } else if (file.isFile()) {
                System.out.println("您输入的是一个文件,路径为: " + file.getAbsolutePath());
            } else {
                return file;
            }
        }
    }
}
out:
world
	1.txt
	2.txt
	3.txt
	4.txt
	5.txt
	6.txt
	hello.txt
		javaSpring.txt
		javaSpring.txt.bak
	新建文件夹
		101.txt
		102.txt
		文件2
		文件夹1
			201.txt

参考:http://www.monkey1024.com/javase/638

猜你喜欢

转载自blog.csdn.net/sinat_41132860/article/details/84404041