我有一个文本文件例如。检查Ruby文件为空的最佳方法是什么?
File.size('test.rb') == 0
看起来很丑陋。
答案 0 :(得分:55)
您可以使用zero?
方法:
File.zero?("test.rb")
答案 1 :(得分:4)
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?
首先读取文件,然后检查文件中是否包含最清晰的文件。