清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
require 'find'
class Recorder
attr_accessor :fileSteam
def initialize(outputFilePath)
@fileSteam = File.open(outputFilePath, 'w')
end
def appendLineToFile(depth, text)
#计算深度,写入tab,写入文件名
str = "\t" * depth + text
puts str
@fileSteam.puts str
end
def closing
@fileSteam.close
puts "Save File #{File.absolute_path(@fileSteam)} Finished."
end
end
class Finder
attr_accessor :fileCount, :directoryCount, :fileNameRecorder, :originDepth
def initialize(recorder)
@fileCount = 0
@directoryCount = 0
@fileNameRecorder = recorder
@originDepth = 0
end
def findInDirectory(directoryPath)
@fileNameRecorder.appendLineToFile(0, "findInDirectory: #{directoryPath}\n")
@originDepth = directoryPath.count "/"
Find.find(directoryPath) do |file|
@fileCount += 1 if File.file?(file)
@directoryCount += 1 if File.directory?(file)
@fileNameRecorder.appendLineToFile(file.count("/") - @originDepth,
File.directory?(file) ? "<" + File.basename(file) + ">" : File.basename(file))
end
@fileNameRecorder.appendLineToFile(0, "directoryCount: #{@directoryCount} filesCount: #{@fileCount}")
@fileNameRecorder.closing
end
end
recorder = Recorder.new(ARGV[1])
finder = Finder.new(recorder)
finder.findInDirectory(ARGV[0])