目录的Ruby File.size返回0

时间:2009-08-12 14:57:06

标签: ruby file

文件说:

  

File.size(file_name)=>整数
  返回file_name的大小。

     

File.size?(file_name)=>整数或   如果file_name没有,则返回nil   存在或没有大小,大小   否则就是文件。

练习(ruby 1.8.7 i386-mswin32):

File.size?('c:/dir')   
# => nill
File.size('c:/dir')
# => 0

nil对我来说很有意义,但是0?我期待一个例外。有人看到这个原因吗?

2 个答案:

答案 0 :(得分:2)

目录文件。好吧,我想在某些操作系统中它们不是,但在所有基于Unix的操作系统中它们都是。

当然,在Unix系统中,“常规”文件系统中的目录(即具有真实文件的目录,而不是/proc等)也具有非零大小。

File.size('/etc')
=> 12288

答案 1 :(得分:1)

例外情况通常很慢,因此每当问题不严重时,出于效率原因最好使用返回标志。只要文件/目录存在,我就看不出异常,事实上会发现一个令人讨厌的问题。像这样,计算总文件大小只是简单地添加它们而不需要错误处理。