38

例如,我有一个文本文件。在 Ruby 中检查文件是否为空的最佳方法是什么? File.size('test.rb') == 0看起来很丑。

4

5 回答 5

61

您可以使用以下zero?方法:

File.zero?("test.rb")
于 2013-04-12T23:14:05.067 回答
5

File.size?('test.rb')评估nil文件是否为空or,它不存在。 File.zero?('test.rb')如果文件为空,则返回 true,但如果找不到文件,则返回 false。根据您的特定需求,您应该小心使用正确的方法。

作为主题创建者问题中的一个示例,他们特别提出了“在 Ruby 中检查文件是否为空的最佳方法是什么?” 接受的答案正确执行此操作,No such file or directory如果文件不存在,将引发错误消息。

在某些情况下,我们可能会认为缺少文件与空文件“等价”。

于 2015-12-16T17:50:21.563 回答
4

从 Ruby 2.4.0 开始,还有File.empty?.

(请注意,false如果您将目录传递给它,它总是返回,无论该目录是否为空:File.empty?('/') # => false. 所以使用Dir.empty?代替,或Pathname#empty?对文件和目录都有效。)

于 2016-12-27T11:59:22.473 回答
2

一种不同的方法是遍历每一行并为每次迭代做一些事情。0 行 = 0 次迭代 = 不需要额外的代码。

于 2013-04-12T23:17:33.983 回答
1

我认为应该像这样检查:

def file_empty?(file_path) 
  !(File.file?(file_path) && !File.zero?(file_path))
end

所以我们不需要担心文件是否存在。

File.zero?('test.rb') 如果文件不存在则返回 false

于 2019-01-02T14:06:25.283 回答