Greetings all. For some reason the answer to this stumps me.
Say I have an existing file, 1K long, and I want to write something
right in the middle of it, without changing the file size.
I would have thought that
a = File.open 'file', 'a+'
a.seek 500
a.write 'abc'
a.close
would work but doesn't seem to. Thoughts?
-R
···
--
Posted via http://www.ruby-forum.com/.
Greetings all. For some reason the answer to this stumps me.
Say I have an existing file, 1K long, and I want to write something
right in the middle of it, without changing the file size.
meaning you want to OVERWRITE something in the middle, yes?
I would have thought that
a = File.open 'file', 'a+'
a.seek 500
a.write 'abc'
a.close
would work but doesn't seem to. Thoughts?
-R
Try a mode of 'r+'. The 'a' part says you want all the writes to go the the end-of-file (whatever that happens to be at the time).
File.open 'file', 'w' do |f| f.write 'x'*1024 end
a = File.open 'file', 'r+'
a.seek 500
a.write 'abc'
a.close
all = File.read('file')
puts all.size
1024
=> nil
puts all.index('abc')
500
=> nil
You can puts(all) yourself if you want 
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
···
On Jun 25, 2008, at 8:59 PM, Roger Pack wrote:
Try a mode of 'r+'. The 'a' part says you want all the writes to go
the the end-of-file (whatever that happens to be at the time).
Works like a charm. You rock!
-R
···
--
Posted via http://www.ruby-forum.com/\.