项目组对软件进行了重构,新增和删除了一些文件。那么我们怎样来确定新增或删除了那些文件。 思路如下:
首先安装旧版本的软件,递归获取到该目录下的所有文件列表。
然后再安装新版本软件,同样递归获取到该目录下的所有文件列表 。
最后比较2个文件列表的差别。即可知道新增了那些文件。
使用ruby数组的“减法”,我们可以轻松实现对比的操作,我们先编写一个可以递归获取指定目录下所有文件的rb文件:
# testDir.rb
#假设我们要查找D:/script/ruby下的所有文件
Dir.chdir('D:/script/ruby')
puts ("***** The inventory is : #{Dir.pwd}")
Dir.glob('**/*').each { | file | print Dir.pwd, file.downcase,"/n" }.sort
我们运行该脚本,把结果保存到old.txt:
D:/script/ruby>ruby testDir.rb>old.txt
生成了一个名为old.txt的文件,内容为:
***** The inventory is : D:/script/ruby
D:/script/rubyhello.rb
D:/script/rubysite_spider.zip
D:/script/rubysite_spider
D:/script/rubyclass/chinese.rb
D:/script/rubyclass/human.rb
。。。
接下来我们在D:/script/ruby目录下新建一个名为findme.log文件,然后重新执行脚本生成一个名为new.txt的文件
D:/script/ruby>ruby testDir.rb>new.txt
至此,和old.txt中的文件列表比,new.txt中应该是多了2个文件: new.txt,findem.log.我们使用ruby数组的“减法”来验证下是否正确。
#compareFileNums.rb
old_array=File.open('D:/script/ruby/old.txt').readlines
new_array=File.open('D:/script/ruby/new.txt').readlines
puts new_array-old_array
执行该文件:
D:/script/ruby>ruby compareFileNums.rb
D:/script/rubyfindme.log
D:/script/rubynew.txt
结果我们预期的一致。 相比java,ruby确实有一些非常快捷的方法。没有最好的编程语言,只有最适合处理某项功能的语言。^-^