三里屯摇滚 发表于 2012-01-08 21:24

Ruby 中获取目录大小


Ruby 中获取目录大小







当前 Chito 中统计目录大小完全是偷懒的方式:1.
class Dir

2.
    def self.size(dir)

3.
       `du -s #{dir} | awk '{print $1}'`.to_i

4.
    end

5.
end直接调用 du 这个程序然后把结果转换成数值就可以了,非常方便~不过要是运行在 Windows 下就不灵了,只好自己写代码统计下:1.
class Dir

2.
    def self.size(dir)

3.
      sum = 0

4.
      Dir.foreach(dir) do |entry|

5.
         next if entry =~ /^\./

6.
         path = File.join(dir, entry)

7.
         FileTest.directory?(path) ? sum += Dir.size(path) : sum += File.size(path)

8.
      end

9.
      sum

10.
    end

11.
end不过计算目录大小是个很慢的工作,尤其时文件夹嵌套很深,小文件又很多的时候,缓存一下是很必要的,当新文件上传或者删除设置个 dirty 标记,dirty 标记存在的时候再去重新获取。

转载地址:http://www.galeki.com/posts/2282.html

2gua 发表于 2012-01-09 08:00

早起顶你!
页: [1]
查看完整版本: Ruby 中获取目录大小