递归算法打印文件路径——树形结构图

使用递归算法打印文件树形结构

思想:使用一个静态变量用于记录文件遍历的深度,然后使用一个静态集合容器装入每次迭代前的需要在路径名前输出的树形特殊结构,最后开始遍历文件数组,先判断该文件路径是不是最后一个路径名,如果不是就使用迭代持续迭代遍历,非路径的先判断其是不是最后一个文件,根据结果的的不同选择输出不同的文件树形结构

实现代码:

package com.filepath;

import java.io.File;
import java.util.LinkedList;

public class FilePathTest02 {
	
	//用于记录文件路径深度
	public static int pathDeep=0;
	
	private static LinkedList<String> fileList=new LinkedList<String>();
	//文件路径打印
	public void printFilePath(File file) {
		//判断当前文件或路径是否存在
		if(file.exists()) {
			//生成一个文件数组
			File[] fileArr=file.listFiles();
			pathDeep++;
			// 遍历每行时,将其分成两部分:行首和File部分。
			// 其中File部分要先判断是目录还是文件,再判断是否是当前目录最后的一个File,在Filename前打印出相应的符号
						
			for(File f:fileArr) {
				// 输出行首
				for(int i=0;i<pathDeep-1;i++) {
					System.out.print(fileList.get(i));
				}
				
				//判断当前文件是否是路径
				if(f.isDirectory()) {
					//判断是不是最后一个目录
					if(fileArr[fileArr.length-1].equals(f)) {
						//是最后一个目录时
						System.out.print("└─");
						fileList.add(pathDeep-1,"  ");
					}else {
						//非最后一个目录时
						fileList.add(pathDeep-1,"│ ");
						System.out.print("├─");
					}
					//输出此时目录的名字
					System.out.println(f.getName());
					//递归遍历
					printFilePath(f);
					
					//如果不是目录而是文件
				}else {
					//先判断当前文件是不是最后一个文件
					if(fileArr[fileArr.length-1].equals(f)) {
						System.out.print("└─");
					}else {
						System.out.print("├─");
					}
					System.out.println(f.getName());
				}
			}
			
		}else {
			System.out.println("文件或路径不存在...");
		}
		pathDeep--;
		
	}

	
	public static void main(String[] args) {
		File file=new File("E:\\0610课件与开发软件");
		System.out.println(file.getName());
		new FilePathTest02().printFilePath(file);
	}
}

运行效果:

运行效果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值