Ruby 中获取目录大小

当前?Chito 中统计目录大小完全是偷懒的方式:

    class?Dir? ??def?self.size(dir)? ? ? ?`du -s #{dir} | awk ‘{print $1}’`.to_i? ??endend

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

    class?Dir? ??def?self.size(dir)? ? ? ? sum =?0? ? ? ??Dir.foreach(dir)?do?|entry|? ? ? ?? ??next?if?entry =~ /^\./? ? ? ?? ? path =?File.join(dir, entry)? ? ? ?? ??FileTest.directory?(path)?? sum +=?Dir.size(path)?: sum +=?File.size(path)? ? ? ??end? ? ? ? sum? ??endend

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

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

若不给自己设限,则人生中就没有限制你发挥的藩篱。

Ruby 中获取目录大小

相关文章:

你感兴趣的文章:

标签云: