From: Rob Biedenharn Date: 2008-06-26T11:38:57+09:00 Subject: Re: how to write in the middle of a file On Jun 25, 2008, at 8:59 PM, Roger Pack wrote: > 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') irb> puts all.size 1024 => nil irb> puts all.index('abc') 500 => nil You can puts(all) yourself if you want ;-) -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com