Reading empty File

B

Bino Oetomo

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-
 
B

Bino Oetomo

Damjan said:
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-
 
B

Bino Oetomo

Bino said:
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-
 
P

Philipp Taprogge

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
 
B

Bino Oetomo

Hi All
Philipp said:
Hi!

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

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-----------------
 
A

Alex Gutteridge

Hi All
Philipp said:
Hi!

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

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-----------------

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,071
Latest member
MetabolicSolutionsKeto

Latest Threads

Top