Just wondering if there's a simpler way to do this?
file = File.open("/usr/blah/1.txt") do | file |
while line = file.gets
the_string += line
end
end
In other words, open a file, read the contents into a string called
the_string
file_contents = File.read("/usr/blah/1.txt")
I was tempted to say "of course there is". It's so typical Ruby.
Btw, a remark to the OP's algorithm: IMHO this one is more efficient since
it does not create new String objects all the time:
file = File.open("/usr/blah/1.txt") do | file |
s = ""
while line = file.gets
s << line
end
s
end
Note also that you might get nil instead of the empty string in your
example if reading from an empty file (untested). But of course the one
liner is even more efficient.
Kind regards
robert
···
On Aug 17, 2005, at 10:30 AM, Julian Leviston wrote:
Yes. But there's a problem with this -- it does more work than
necessary. The IO.read approach that is superior. However, I prefer:
contents = open(filename, "rb") { |f| f.read }
It's not quite as short as the IO.read approach, but it does two things for me:
1. It's safe for text or binary files on all platforms.
2. Because I'm using "open", if I do "require 'open-uri'", then
filename can also be a URL to a remoate location.
-austin
···
On 8/17/05, astrodean@yahoo.co.uk <astrodean@yahoo.co.uk> wrote: