Today's the day

向软件大牛炫耀我会单片机,向硬件大牛炫耀我会 Rails,向软硬件大牛炫耀我生物 -_-!

在插件中添加 Controller
原来有个 reset_session

Ruby 中获取目录大小

galeki posted @ 2008年4月16日 05:39 in Ruby&Rails进修 , 1583 阅读

查了查,Dir 类没有 size 方法,也没找到现成的解决方案,自己动手吧~

当前 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 标记存在的时候再去重新获取。

  • 无匹配
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter