例如,我有一个文本文件。在 Ruby 中检查文件是否为空的最佳方法是什么?
File.size('test.rb') == 0
看起来很丑。
问问题
19766 次
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 回答