Ruby如何簡潔地讀整個(gè)文件,你可以這樣做:
利用了文件打開的IO對(duì)象混入了Enumerable模塊這一特點(diǎn),通過map或者collect將所有文件行放入一個(gè)數(shù)組,再join即可。
更正,其實(shí)更簡介的方法是:
IO.read("test.log")
僅限于讀文本文件。
這個(gè)tip的由來是我在讀二進(jìn)制文件的時(shí)候發(fā)現(xiàn)IO.read出來的大小與實(shí)際結(jié)果不符合,然后去嘗試上文提到的這個(gè)方法,其實(shí)仍然是錯(cuò)誤的。讀二進(jìn)制文件需要指定mode為b:
File.open("test.swf","rb")
僅作更正。
f=File.open("test.log","r")
result=''
f.each_line do |line|
result+=line
end
puts result
但是,更簡潔的方法是:result=''
f.each_line do |line|
result+=line
end
puts result
File.open("test.log","r"){ |f| f.collect.join}
利用了文件打開的IO對(duì)象混入了Enumerable模塊這一特點(diǎn),通過map或者collect將所有文件行放入一個(gè)數(shù)組,再join即可。
更正,其實(shí)更簡介的方法是:
IO.read("test.log")
僅限于讀文本文件。
這個(gè)tip的由來是我在讀二進(jìn)制文件的時(shí)候發(fā)現(xiàn)IO.read出來的大小與實(shí)際結(jié)果不符合,然后去嘗試上文提到的這個(gè)方法,其實(shí)仍然是錯(cuò)誤的。讀二進(jìn)制文件需要指定mode為b:
File.open("test.swf","rb")
僅作更正。