# Reading empty File

**URL:** <https://www.ruby-forum.com/t/reading-empty-file/92594>\
**Category:** Ruby\
**Created:** [April 21, 2007, 7:14am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594 "2007-04-21T07:14:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 21, 2007, 7:14am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/1 "2007-04-21T07:14:05Z")

</div>

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-

---

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 21, 2007, 8:40am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/2 "2007-04-21T08:40:31Z")

</div>

> 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

---

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 21, 2007, 9:37am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/3 "2007-04-21T09:37:34Z")

</div>

Damjan R. 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-

---

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 21, 2007, 9:43am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/4 "2007-04-21T09:43:05Z")

</div>

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-

---

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 22, 2007, 4:26pm UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/5 "2007-04-22T16:26:13Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 23, 2007, 3:01am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/6 "2007-04-23T03:01:11Z")

</div>

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

> > it programmatically, or you just use IO.gets instead of IO.readline,  
> > [root@kannel root]# touch /mnt/ramdisk0/js01  
> > rescue EOFError  
> > ^  
> > from (irb):7  
> > from :0  
> > ----------end-----------------
> 
> –  
> Posted via [http://www.ruby-forum.com/](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 G.

Bioinformatics Center  
Kyoto University

---

<div class="post-metadata">

**Author:** ![bino](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b19c9b/32.png) [@bino](https://www.ruby-forum.com/u/bino)\
**Post date:** [April 23, 2007, 2:51am UTC](https://www.ruby-forum.com/t/reading-empty-file/92594/7 "2007-04-23T02:51:14Z")

</div>

Hi All  
Philipp T. 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-----------------
