博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 教学例子 目录树 (初级)
阅读量:4048 次
发布时间:2019-05-25

本文共 2064 字,大约阅读时间需要 6 分钟。

/**
  * 作者: 杨帆
  * mail: yifi@tom.com
  * licence: GPL 修改或转发请保留原始作者信息
 
*/
import
 java.io.
*
;
import
 java.util.
*
;
public
 
class
 MyTree 
{
    
public static void main(String[] args) {
        MadeTree mt 
= new MadeTree();
        
try {
            File file 
= new File(args[0]);
            
if (file.isDirectory() == false{
                
throw new Exception("不是目录!");
            }
            mt.made(file, 
0new LinkedList());
        }
 catch (Exception e) {
            System.out.println(
"用法: java MyTree 目录名");
            e.printStackTrace();
        }
    }
}
class
 MadeTree 
{
    
public static String signTreeBranch = "├─";
    
public static String signTreeLastBranch = "└─";
    
public static String signTreeThroughBranch = "│  ";
    
public static String signTreeNoneBranch = "    ";
    
public static boolean isPrintFile = true;//true:显示文件  false:不显示文件
    
public void made(File file, int num, LinkedList link) {
        
        File[] fileArray;
        
        
if(MadeTree.isPrintFile == true){
            fileArray 
= file.listFiles();
        }
else{
            fileArray 
= file.listFiles(new MyFileFilter());
        }
        
        Iterator it 
= link.iterator();
        
while (it.hasNext()) {
            System.out.print(it.next());
        }
        
if (fileArray == null{
            
//说明传进来的是空目录或文件
            System.out.println(file.getName());
        }
 else {
            
//说明传进来的是有内容的目录
            System.out.println("[" + file.getName() + "]");
            
//处理下一级目录
            
if (link != null && link.size() > 0{
                
//如果父节点是分支则用signTreeThroughBranch代替
                if (link.getLast().equals(MadeTree.signTreeBranch)) {
                    link.removeLast();
                    link.addLast(MadeTree.signTreeThroughBranch);
                }
                
//如果父节点是末支则用signTreeNoneBranch代替
                if (link.getLast().equals(MadeTree.signTreeLastBranch)) {
                    link.removeLast();
                    link.addLast(MadeTree.signTreeNoneBranch);
                }
            }
            link.addLast(MadeTree.signTreeBranch);
            
for (int i = 0; i < fileArray.length; i++{
                
if (i != fileArray.length - 1{
                    
//处理成分支
                }
 else {
                    
//处理成末支
                    link.removeLast();
                    link.addLast(MadeTree.signTreeLastBranch);
                }
                
//此处要特别注意link是要clone的,要不就共享一个了
                made(fileArray[i], num + 1, (LinkedList) link.clone());
            }
        }
    }
}
/**
 * 文件过滤器,过滤掉不是目录的文件
 
*/
class
 MyFileFilter 
implements
 FileFilter 
{
    
public boolean accept(File pathname) {
        
if (pathname.isDirectory()) {
            
return true;
        }
 else {
            
return false;
        }
    }
}

转载地址:http://fmfci.baihongyu.com/

你可能感兴趣的文章
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret&nbsp;1.1&nbsp;正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 高可用集群部署(三)
查看>>
Golang struct 指针引用用法(声明入门篇)
查看>>
Linux 粘滞位 suid sgid
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>
Winform多线程
查看>>
C# 托管与非托管
查看>>
Node.js中的事件驱动编程详解
查看>>
mongodb 命令
查看>>
MongoDB基本使用
查看>>
mongodb管理与安全认证
查看>>