注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

Tree 目錄樹  

2012-10-30 16:19:21|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//轉
///////////////////////////////////////////////////
char pSpace[512]={0};
Tree("c:");
void Tree(char *pPath)
{
 WIN32_FIND_DATA wfd;
 HANDLE hFind;
 BOOL bNext=TRUE;
 char pFind[MAX_PATH]={0};
 
 if (strlen(pPath)==2)
 {
  printf(ff,"=======================\r\n");
  printf(ff,"%s\r\n",pPath);
  memset(pSpace,0,sizeof(pSpace));
  sprintf(pSpace,"│  ");
 }
 sprintf(pFind,"%s\\*.*",pPath);
 hFind = FindFirstFile(pFind,&wfd);
 while (hFind!=INVALID_HANDLE_VALUE && bNext==TRUE)
 {
  if (wfd.cFileName[0]!='.')
  {
        if (wfd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
        {
         printf(ff,"%s├─%s\r\n",pSpace,wfd.cFileName);
         strcat(pSpace,"│    ");
         char strSubDir[MAX_PATH]={0};
         sprintf(strSubDir,"%s\\%s",pPath,wfd.cFileName);
         Tree(strSubDir,szRecPath);
        }
        else
            printf(ff,"%s%s\r\n",pSpace,wfd.cFileName);
  }
  bNext = FindNextFile(hFind,&wfd);
 }
 pSpace[strlen(pSpace) - 6] = 0;
 FindClose(hFind); return 0;
}

///////////////////////////////////////////////////
def fileFace = { File file ->
    return (file.isDirectory() ? "[${file.name}]" : "${file.name}")
}

def connectStr = { int index, int size ->
    return (index == size - 1) ? '└-' : '├-';
}

def placeHolderStr = { int index, List levels ->
    return levels.contains(index) ? '|  ' : '   ';
}

def dump
dump = { File context, int depth, Stack levels ->
    def files = context.listFiles()
    int size = files.size()
    for (int i = 0; i < size; i++)
        {
        def file = files[i]
        StringBuilder entryPath = new StringBuilder();
        for (int j = 0; j < depth; j++)
            entryPath << placeHolderStr(j, levels)
        entryPath << connectStr(i, size) + fileFace(file)
        println entryPath
        if (file.isDirectory())
                {
            if (i != size - 1) levels.push(depth)
            dump(file, depth + 1, levels)
            if (i != size - 1) levels.pop()
        }
    }
}

def tree = {
    if (args.size() != 1) return
    def context = new File(args[0]);
    if (!context.exists()) return
    println fileFace(context)
    dump(context, 0, [] as Stack)
}

///////////////////////////////////////////////////
require "pathname"
class Tree
  def initialize
  end
 
  def test_tree
    dir = "c:/amp"
    puts dir
    @lasts = []
    trav_dirs dir,1
  end
 
  def trav_dirs(dir,deep)
    if File.directory?(dir)
      subs = Pathname.new(dir).children
      0.upto(subs.size-1) { |i|
        @lasts << (i == subs.size-1)
        prt_node subs[i], deep
        trav_dirs subs[i], deep + 1
        @lasts.pop
      }
    end
  end
 
  def prt_node(dir,deep)
    line = ''
    0.upto(deep-2) { |i|
      line = line + (@lasts[i] ? ' ' : '│') + ' '
    }
    puts line + (@lasts[-1] ? '└' : '├' ) + '─ ' + File.basename(dir)   
  end 
end
  评论这张
 
阅读(742)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017