在循环遍历IO对象中的每一行之前,我需要获取IO对象包含的总行数。我怎么能用红宝石做到这一点?
答案 0 :(得分:3)
你不能真的,除非你想要发送到wc
并解析结果 - 否则你需要做两次通过 - 一次获得行号,另一次来做你的实际工作。
(假设我们正在讨论File
IO
实例 - 这些方法都不适用于网络套接字等)
答案 1 :(得分:1)
(唯一的区别是我如何生成文件对象实例)
file = File.open(File.join(Rails.root, 'lib', 'assets', 'file.json'))
linecount = file.readlines.size
答案 2 :(得分:0)
io.lines.count
会给你一些行数。
io.lines.each_with_index {|line, index|}
会给你每一行和它的行号(从0开始)。
但我不知道是否可以在不读取文件的情况下计算行数。
您可能想要阅读文件,然后使用io.rewind
再次阅读。
答案 3 :(得分:0)
如果您的文件不是很大,请将其粘贴到内存(数组)中并计算项目数(即行数)。