用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!相关的知识,希望对你有一定的参考价值。

当然在理论上是可以实现的,可以将所有的子文件都以树形结构出来,但是文件很多的时候就会非常纠结
我理解中的树形结构大概是这样(不知道这样的图形是不是你想要的)
a
|
------------------
| | |
b c d

以下是代码,找了系统盘下子文件较少的文件夹 C:/Windows/AppPatch,当然也可以换成你自己的路径来测试

import java.io.File;

public class FileTree

/**
* @param args
*/
public static void main(String[] args)
try
File file = new File("C:\\Windows\\AppPatch");
if(file.isDirectory())
String[] fileList = file.list();
String fileName = file.getName();
int allLength = 0;
for(int i=0;i<fileList.length;i++)
allLength += (fileList[i]+" ").length();

for(int i=0;i<allLength/2;i++)
System.out.print(" ");

System.out.println(fileName);
for(int i=0;i<allLength/2;i++)
System.out.print(" ");

for(int i=0;i<fileName.length()/2;i++)
System.out.print(" ");

System.out.println("|");
for(int i=0;i<allLength;i++)
System.out.print("-");

System.out.println("");
for(int i=0;i<fileList.length;i++)
int tmpLength = fileList[i].length();
int subLength = tmpLength/2;
int lastLength = tmpLength - subLength - 1;
for(int j=0;j<subLength;j++)
System.out.print(" ");

System.out.print("|");
for(int j=0;j<lastLength;j++)
System.out.print(" ");

System.out.print(" ");

System.out.println("");
for(int i=0;i<fileList.length;i++)
System.out.print(fileList[i]+" ");



else
System.out.println("对不起,你提供的路径不是文件夹");


catch (Exception e)
e.printStackTrace();




这时可以发现输出每一个子文件/子文件夹的名字已经比较长,要是再想输出这些子文件夹里面的文件,那幅图个人觉得相当纠结,也许是我水平没够吧或是我理解错了你说的树形结构
希望以上代码对你有帮助
参考技术A import java.io.*;//new File 时必须引入IO包

public class FileList
public static void main(String[] args)
File f = new File("d:/test");//设置根目录,该目录下别放太多文件和文件夹
System.out.println(f.getName());
tree(f, 1);


private static void tree(File f, int level)
String preStr = "";
for(int i=0; i<level; i++)
preStr += " ";

File[] childs = f.listFiles();//返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
for(int i=0; i<childs.length; i++)
System.out.println(preStr + childs[i].getName());
if(childs[i].isDirectory())
tree(childs[i], level + 1);



本回答被提问者采纳

java File类-递归遍历目录结构和树状展现

f.listFiles(); //返回目录下的所有子目录和子文件
版本一:未加计数器分层次

static void f(File f) 
        System.out.println(f.getName());
        if(f.isDirectory())
        
            File[] files=f.listFiles();    //如果是目录,返回目录下的所有子目录和子文件
            for(File fi:files)
            
                f(fi);
            
    
    

版本二:加计数器分层次

        static void f(File f,int level)     //添加计数器
            for(int i=0;i<level;i++)
            
                System.out.print("-");        //打印“-”
            
            System.out.println(f.getName());
            if(f.isDirectory())
            
                File[] files=f.listFiles();    //如果是目录,返回目录下的所有子目录和子文件
                for(File fi:files)
                
                    f(fi,level+1);             //每次递归是level加1
                
            
        

以上是关于用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!的主要内容,如果未能解决你的问题,请参考以下文章

pstree---树状图的方式展现进程

如何在 Windows 命令行中以不同的颜色回显 [关闭]

使用 python 运行命令行操作

JAVA程序命令行中有空格问题

dentry和inode

如何在Windows命令行中使用unicode字符?