Hi All,
I am trying to read in a binary file of size 'n' using:
mem_buf = IO.read(file_name, n, 0)
Where file_name is an argument to the script.
But after the read I observed that the size of the mem_buf is less
than 'n' (It should be equal to 'n').
(mem_buf.size != n).
This script fails on the above read check.
Any ideas what I might be doing wrong here. Any help will be
appreciated.
Thanks in advance,
Rohit
Al_Og
(Al Og)
21 December 2007 10:40
2
unknown wrote:
mem_buf = IO.read(file_name, n, 0)
Where file_name is an argument to the script.
But after the read I observed that the size of the mem_buf is less
than 'n' (It should be equal to 'n').
It looks like your file size is less than number of bytes you're trying
to read.
In this case size of the mem_buf must be equal to the file size.
mem_buf.size == File.size(file_name)
Regards,
arkadi4
···
--
Posted via http://www.ruby-forum.com/\ .
Robert_K1
(Robert K.)
21 December 2007 12:37
3
Either, the file is smaller than n or you have an issue with
conversion (typically on Windows). For binary files I'd do this which
is more portable:
mem_buf = File.open(file_name,"rb") {|io| io.read}
Also, it helps documenting things. Bw, you do not need the offset and
size arguments.
Kind regards
robert
···
2007/12/21, rohit2000s@yahoo.com <rohit2000s@yahoo.com>:
Hi All,
I am trying to read in a binary file of size 'n' using:
mem_buf = IO.read(file_name, n, 0)
Where file_name is an argument to the script.
But after the read I observed that the size of the mem_buf is less
than 'n' (It should be equal to 'n').
(mem_buf.size != n).
This script fails on the above read check.
Any ideas what I might be doing wrong here. Any help will be
appreciated.
--
use.inject do |as, often| as.you_can - without end
Thanks a lot ! That was the exact problem I had - getting that part of
code to work on windows.
Could you please take time to detail a bit on:
"{|io| io.read}" part of the code.
Also is there a way to add the offset and size arguments to the read
method that you suggested ?
Thanks in advance,
Rohit
···
On Dec 21, 5:37 pm, Robert Klemme <shortcut...@googlemail.com> wrote:
2007/12/21, rohit20...@yahoo.com <rohit20...@yahoo.com>:
> Hi All,
> I am trying to read in a binary file of size 'n' using:
> mem_buf = IO.read(file_name, n, 0)
> Where file_name is an argument to the script.
> But after the read I observed that the size of the mem_buf is less
> than 'n' (It should be equal to 'n').
> (mem_buf.size != n).
> This script fails on the above read check.
> Any ideas what I might be doing wrong here. Any help will be
> appreciated.
Either, the file is smaller than n or you have an issue with
conversion (typically on Windows). For binary files I'd do this which
is more portable:
mem_buf = File.open(file_name,"rb") {|io| io.read}
Also, it helps documenting things. Bw, you do not need the offset and
size arguments.
Kind regards
robert
--
use.inject do |as, often| as.you_can - without end
Robert_K1
(Robert K.)
21 December 2007 20:10
5
Hi All,
I am trying to read in a binary file of size 'n' using:
mem_buf = IO.read(file_name, n, 0)
Where file_name is an argument to the script.
But after the read I observed that the size of the mem_buf is less
than 'n' (It should be equal to 'n').
(mem_buf.size != n).
This script fails on the above read check.
Any ideas what I might be doing wrong here. Any help will be
appreciated.
Either, the file is smaller than n or you have an issue with
conversion (typically on Windows). For binary files I'd do this which
is more portable:
mem_buf = File.open(file_name,"rb") {|io| io.read}
Also, it helps documenting things. Bw, you do not need the offset and
size arguments.
Kind regards
robert
--
use.inject do |as, often| as.you_can - without end
Thanks a lot ! That was the exact problem I had - getting that part of
code to work on windows.
You probably should have mentioned this.
Could you please take time to detail a bit on:
"{|io| io.read}" part of the code.
It's the block form of File.open and the return value of File.open in this case is the result of the block.
Also is there a way to add the offset and size arguments to the read
method that you suggested ?
http://ruby-doc.org/core/classes/IO.html#M002295
Cheers
robert
···
On 21.12.2007 15:34, rohit2000s@yahoo.com wrote:
On Dec 21, 5:37 pm, Robert Klemme <shortcut...@googlemail.com> wrote:
2007/12/21, rohit20...@yahoo.com <rohit20...@yahoo.com>: