亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

qq_遁去的一_1 2019-11-05 11:11:08
在Ruby中讀取文件的所有常用方法有哪些?例如,這是一種方法:fileObj = File.new($fileName, "r")while (line = fileObj.gets)  puts(line)endfileObj.close我知道Ruby非常靈活。每種方法的優點/缺點是什么?
查看完整描述

4 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

File.open("my/file/path", "r") do |f|

  f.each_line do |line|

    puts line

  end

end

# File is closed automatically at end of block

也可以在上述之后顯式關閉文件(傳遞一個塊open為您關閉文件):


f = File.open("my/file/path", "r")

f.each_line do |line|

  puts line

end

f.close


查看完整回答
反對 回復 2019-11-05
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

您可以一次讀取所有文件:


content = File.readlines 'file.txt'

content.each_with_index{|line, i| puts "#{i+1}: #{line}"}

當文件很大或可能很大時,通常最好逐行處理它:


File.foreach( 'file.txt' ) do |line|

  puts line

end

有時,您可能想要訪問文件句柄,或者自己控制讀?。?/p>


File.open( 'file.txt' ) do |f|

  loop do

    break if not line = f.gets

    puts "#{f.lineno}: #{line}"

  end

end

如果是二進制文件,則可以指定nil-separator和塊大小,如下所示:


File.open('file.bin', 'rb') do |f|

  loop do

    break if not buf = f.gets(nil, 80)

    puts buf.unpack('H*')

  end

end

最后,您可以無障礙地執行此操作,例如,當同時處理多個文件時。在這種情況下,必須顯式關閉文件(根據@antinome的注釋進行改進):


begin

  f = File.open 'file.txt'

  while line = f.gets

    puts line

  end

ensure

  f.close

end

參考:File API和IO API。


查看完整回答
反對 回復 2019-11-05
  • 4 回答
  • 0 關注
  • 952 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號