This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Reading the Contents of a File | ||
---|---|---|
Code | Expected | Actual |
#Put some stuff into a file. open('sample_file', 'w') do |f| f.write("This is line one.\nThis is line two.") end |
Then read it back out. |
|
open('sample_file') { |f| f.read } |
"This is line one.\nThis is line two." | "This is line one.\nThis is line two." |
File.read('sample_file') |
"This is line one.\nThis is line two." | "This is line one.\nThis is line two." |
open('sample_file') { |f| f.readlines } |
["This is line one.\n", "This is line two."] | ["This is line one.\n", "This is line two."] |
open('sample_file').each { |x| p x } |
"This is line one.\n" "This is line two." |
"This is line one.\n" "This is line two." |
puts open('conclusion') { |f| f.read(50) } |
"I know who killed Mr. Lambert," said Joe. "It was Create a file... |
Error! (Exception?) Here's stdout: Errno::ENOENT: No such file or directory - conclusion from (irb):9:in `initialize' from (irb):9 |
open('end_separated_records', 'w') do |f| f << %{This is record one. It spans multiple lines.ENDThis is record two.END} end |
And read it back in. |
|
open('end_separated_records') { |f| f.each('END') { |record| p record } } |
"This is record one.\nIt spans multiple lines.END" "This is record two.END" Create a file... |
"This is record one.\nIt spans multiple lines.END" "This is record two.END" |
open('pipe_separated_records', 'w') do |f| f << "This is record one.|This is record two.|This is record three." end |
And read it back in. |
|
open('pipe_separated_records') { |f| f.readlines('|') } |
["This is record one.|", "This is record two.|", | ["This is record one.|", "This is record two.|", "This is record three."] |
open('newline_separated_records', 'w') do |f| f.puts 'This is record one. It cannot span multiple lines.' f.puts 'This is record two.' end open('newline_separated_records') { |f| f.each { |x| p x } } |
"This is record one. It cannot span multiple lines.\n" "This is record two.\n" |
"This is record one. It cannot span multiple lines.\n" "This is record two.\n" |
open('file_from_unknown_os') { |f| f.read().split(/\r?\n|\r(?!\n)/) } "This line has a Unix/Mac OS X newline.\n".chomp |
"This line has a Unix/Mac OS X newline." | "This line has a Unix/Mac OS X newline." |
"This line has a Windows newline.\r\n".chomp |
"This line has a Windows newline." | "This line has a Windows newline." |
"This line has an old-style Macintosh newline.\r".chomp |
"This line has an old-style Macintosh newline." | "This line has an old-style Macintosh newline." |
"This string contains two newlines.\n\n".chomp |
"This string contains two newlines.\n" |
|
'This is record two.END'.chomp('END') |
"This is record two." | "This is record two." |
'This string contains no newline.'.chomp |
"This string contains no newline." | "This string contains no newline." |
open('pipe_separated_records') do |f| f.each('|') { |l| puts l.chomp('|') } end |
This is record one. This is record two. This is record three. |
This is record one. This is record two. This is record three. |
lines = open('pipe_separated_records') { |f| f.readlines('|') } |
["This is record one.|", "This is record two.|", | ["This is record one.|", "This is record two.|", "This is record three."] |
lines.each { |l| l.chomp!('|') } |
["This is record one.", "This is record two.", "This is record three."] | ["This is record one.", "This is record two.", "This is record three."] |
class File def each_chunk(chunk_size=1024) yield read(chunk_size) until eof? end end open("pipe_separated_records") do |f| f.each_chunk(15) { |chunk| puts chunk } end |
This is record one.|This is re cord two.|This is record three . |
This is record one.|This is re cord two.|This is record three . |