File.open not reading full file when repeatedly called

I have a trange situation…

I have a read method which uses the syntax:
data = File.open(myFile)
data.each_line { |line|
# read in the file
}
data.close

The file is 6311 lines long.

If I read in file_A and write it out to file_B I get a duplicate as
expected.
BUT if I, WITHOUT exiting the program read in file_B it will only read
in 6250 lines.

If I exit the program and restart with reading in file_B the entire file
is read.

Is this a memory problem with ruby? Or should I be doing something
different when I read a file?

On Apr 25, 2006, at 5:31 PM, Todd S. wrote:

The file is 6311 lines long.
Is this a memory problem with ruby? Or should I be doing something
different when I read a file?


Posted via http://www.ruby-forum.com/.

Could you give more of your code please? (Also if you just want to
read the whole file into one string you can do File.read(“filename”) )

Todd S. wrote:

The file is 6311 lines long.
different when I read a file?
You need to flush the file buffer before you start reading.

You can do this either by closing the file_B after you have completed
writing it and then opening for reading, or by explicitly calling flush
on file_B.

Ray

I completely forgot to put the myFile.close call into the write routine.
Because the read was not getting all the data, that’s where I was
looking for the problem.

Thanks both for your help. Following up on your answers lead me to the
solution.

2006/4/26, Todd S. [email protected]:

I completely forgot to put the myFile.close call into the write routine.

That’s the reason why it’s recommended to use the block form of
File.open().

Cheers

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs