在Ruby中读取文件的所有常用方法有哪些?

在Ruby中读取文件的所有常用方法有哪些?


例如,这是一种方法:


fileObj = File.new($fileName, "r")

while (line = fileObj.gets)

  puts(line)

end

fileObj.close

我知道Ruby非常灵活。每种方法的优点/缺点是什么?


qq_遁去的一_1
浏览 884回答 4
4回答

狐的传说

File.open("my/file/path", "r") do |f|  f.each_line do |line|    puts line  endend# File is closed automatically at end of block也可以在上述之后显式关闭文件(传递一个块open为您关闭文件):f = File.open("my/file/path", "r")f.each_line do |line|  puts lineendf.close

慕后森

您可以一次读取所有文件:content = File.readlines 'file.txt'content.each_with_index{|line, i| puts "#{i+1}: #{line}"}当文件很大或可能很大时,通常最好逐行处理它:File.foreach( 'file.txt' ) do |line|  puts lineend有时,您可能想要访问文件句柄,或者自己控制读取:File.open( 'file.txt' ) do |f|  loop do    break if not line = f.gets    puts "#{f.lineno}: #{line}"  endend如果是二进制文件,则可以指定nil-separator和块大小,如下所示:File.open('file.bin', 'rb') do |f|  loop do    break if not buf = f.gets(nil, 80)    puts buf.unpack('H*')  endend最后,您可以无障碍地执行此操作,例如,当同时处理多个文件时。在这种情况下,必须显式关闭文件(根据@antinome的注释进行改进):begin  f = File.open 'file.txt'  while line = f.gets    puts line  endensure  f.closeend参考:File API和IO API。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby