如何检查Ruby文件是否为空?

时间:2013-04-12 23:11:27

标签: ruby

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

6 个答案:

答案 0 :(得分:55)

您可以使用zero?方法:

File.zero?("test.rb")

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

从Ruby 2.4.0开始,有File.empty?

(请注意,如果您将目录传递给目录,它总是返回false,无论该目录是否为空:File.empty?('/') # => false。所以请改用Dir.empty?,或{{3}这适用于文件和目录。)

答案 4 :(得分:1)

我认为应该这样检查:

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

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

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

答案 5 :(得分:-1)

我个人喜欢这样检查:

File.read('test.json').empty?

首先读取文件,然后检查文件中是否包含最清晰的文件。