[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Reading in files, keeping *ALL* info from file

Chris Binc

8/15/2006 9:31:00 PM

Hi,

I am trying to read in a file and parse it. It uses hex values, such
as 0x0000 to identify certain tags. When I read this into
Ruby(IO.read), it simply gives me a blank string: "" However, I need to
be able to get 0x0000 from my input. The same is true of 0x0001, which
returns the same as 0x1, but I need the leading 0's.

I have attempted to use the lower lever sysread an syswrite, but to no
avail. I have the same problem and in addition, when asked to read
0x0000 it returns an (IOError) where read simply returns "".

Is there any way for me to read this information in and keep every byte?

Thank you

Chris

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

3 Answers

Sylvain Joyeux

8/15/2006 10:04:00 PM

0

Works fine here, maybe you should send how you do read your file

[~/tmp]% cat test_read.rb
data = File.open(ARGV[0]) do |file|
file.read
end
puts data.inspect

[~/tmp]% echo -n '\000\000\000\001' > file
[~/tmp]% ruby test_read.rb file
"\000\000\000\001"

Regards,
Sylvain Joyeux

Suraj Kurapati

8/15/2006 10:16:00 PM

0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Sylvain Joyeux wrote:
> data = File.open(ARGV[0]) do |file|
> file.read
> end
> puts data.inspect


This code can be shortened as thus:

p ARGF.read

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

iD8DBQFE4kcnmV9O7RYnKMcRAs5dAJ475eHEz7BmrL+qVQP2f3OE2Y6IkQCgmae8
LO7exDURrnYncZQ17UOQjHs=
=Qn+B
-----END PGP SIGNATURE-----

Robert Klemme

8/16/2006 8:45:00 PM

0

Chris Binc wrote:
> Hi,
>
> I am trying to read in a file and parse it. It uses hex values, such
> as 0x0000 to identify certain tags. When I read this into
> Ruby(IO.read), it simply gives me a blank string: "" However, I need to
> be able to get 0x0000 from my input. The same is true of 0x0001, which
> returns the same as 0x1, but I need the leading 0's.
>
> I have attempted to use the lower lever sysread an syswrite, but to no
> avail. I have the same problem and in addition, when asked to read
> 0x0000 it returns an (IOError) where read simply returns "".
>
> Is there any way for me to read this information in and keep every byte?

Since you're reading binary data, here's what I'd do

bytes = File.open(f, "rb") {|io| io.read}

Kind regards

robert