Reading empty File

Hi All

I have an empty file : /mnt/ramdisk0/js01
I open it with --> f_send01 = File.open("/mnt/ramdisk0/js01","w+")

and next line is --> l_send01 = f_send01.readline
and rubby give error msg EOFError.

Question : How to tell ruby to go to next command if only the file is
not empty.

well basically what i want to do is :

-- open a file
-- if not empty , output the content , and make the file empty

regards
-bino-

···

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

I open it with --> f_send01 = File.open("/mnt/ramdisk0/js01","w+")

I could be wrong, but aren't you opening file only for writing?

by

TheR

···

--
Posted via http://www.ruby-forum.com/\.

Hi!

Thus spake Bino Oetomo on 04/21/2007 07:14 AM:

Question : How to tell ruby to go to next command if only the file is
not empty.

You have two options: either you rescue the EOFError and deal with
it programmatically, or you just use IO.gets instead of IO.readline,
which will not raise an error but return 'nil' if the EOF is reached.

HTH,

  Phil

Damjan Rems wrote:

I could be wrong, but aren't you opening file only for writing?

I thing that "w+" flag means "read and write", Am I right ?

Regards
-bino-

···

--
Posted via http://www.ruby-forum.com/\.

Hi All
Philipp Taprogge wrote:

Hi!

Thus spake Bino Oetomo on 04/21/2007 07:14 AM:

Question : How to tell ruby to go to next command if only the file is
not empty.

You have two options: either you rescue the EOFError and deal with
it programmatically, or you just use IO.gets instead of IO.readline,
which will not raise an error but return 'nil' if the EOF is reached.

HTH,

  Phil

I tried it with irb, here is the cut
-----------Start--------------
[root@kannel root]# rm /mnt/ramdisk0/js01
rm: remove regular empty file `/mnt/ramdisk0/js01'? y
[root@kannel root]# touch /mnt/ramdisk0/js01
[root@kannel root]# irb
irb(main):001:0> File.open("/mnt/ramdisk0/js01", "r+") do |f|
irb(main):002:1* f.each_line { |line|
irb(main):003:2* puts line
irb(main):004:2> f.close}
irb(main):005:1> rescue EOFError
irb(main):006:1> f.close
irb(main):007:1> end
SyntaxError: compile error
(irb):5: parse error, unexpected kRESCUE, expecting kEND
    rescue EOFError
          ^
        from (irb):7
----------end-----------------

···

from :0

--
Posted via http://www.ruby-forum.com/\.

Bino Oetomo wrote:

I thing that "w+" flag means "read and write", Am I right ?

OOOpppsss
I just realize that i have to use "r+" for read write without "truncate"

Regards
-bino-

···

--
Posted via http://www.ruby-forum.com/\.

rescue needs to be paired with a begin. E.g.

irb(main):021:0> begin
irb(main):022:1* raise
irb(main):023:1> rescue
irb(main):024:1> puts "hi"
irb(main):025:1> end
hi
=> nil

Alex Gutteridge

Bioinformatics Center
Kyoto University

···

On 23 Apr 2007, at 09:51, Bino Oetomo wrote:

Hi All
Philipp Taprogge wrote:

Hi!

Thus spake Bino Oetomo on 04/21/2007 07:14 AM:

Question : How to tell ruby to go to next command if only the file is
not empty.

You have two options: either you rescue the EOFError and deal with
it programmatically, or you just use IO.gets instead of IO.readline,
which will not raise an error but return 'nil' if the EOF is reached.

HTH,

  Phil

I tried it with irb, here is the cut
-----------Start--------------
[root@kannel root]# rm /mnt/ramdisk0/js01
rm: remove regular empty file `/mnt/ramdisk0/js01'? y
[root@kannel root]# touch /mnt/ramdisk0/js01
[root@kannel root]# irb
irb(main):001:0> File.open("/mnt/ramdisk0/js01", "r+") do |f|
irb(main):002:1* f.each_line { |line|
irb(main):003:2* puts line
irb(main):004:2> f.close}
irb(main):005:1> rescue EOFError
irb(main):006:1> f.close
irb(main):007:1> end
SyntaxError: compile error
(irb):5: parse error, unexpected kRESCUE, expecting kEND
    rescue EOFError
          ^
        from (irb):7
        from :0
----------end-----------------

--
Posted via http://www.ruby-forum.com/\.