i want to read the 1-st bit
if the bit is “1” then update that position bit to “0” instantly
if the bit is “0” then update that position bit to “1” instantly
then i have to read 2-nd bit
do the same thing like above conversion
…
…
like i want to do this for all bit of that file
i know we can read the file into a array then we can do the
modification,etc
but i want to update on that same file object, and the file size may be
more then 1 GB
is it possible?
any idea and help is very much appreciated
Anything is possible. But doing it bitwise is extremely inefficient.
You should rather do it in chunks of, say, 1025 or 512 bytes or - even
better - use the cluster size of your file system.
XOR will be useful
irb(main):004:0> a = 11
=> 11
irb(main):005:0> sprintf “%08b → %08b”, a, a ^ 0xFF
=> “00001011 → 11110100”
You can synchronize io setting file.sync = true to update on the same
file object
That does only change the point in time when the change in the file
can be observed by other processes but it does not affect where the
changes are written. For that (i.e. writing to the same file) you
need File.open(name, “r+”) anyway.
If you use that option and do “bitwise” updates (actually only
bytewise is possible) efficiency will drop even more dramatically.
Kind regards
robert
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.