中午做了个小demo,实现windows下的tree命令。
运行结果如下:
[img]http://dl.iteye.com/upload/attachment/287329/c8739be0-c1ff-32da-ae63-a938042f8611.png[/img]
require "pathname"
class Test1
def initialize
end
def test_tree
dir = "D:/amp/MySQL Server 5.0"
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
Test1.new.test_tree
运行结果如下:
[img]http://dl.iteye.com/upload/attachment/287329/c8739be0-c1ff-32da-ae63-a938042f8611.png[/img]