Mark Dodwell | 16 May 00:06
Picon
Favicon

Create an empty file of certain size

Hi,

I need to create an empty (or at least garbage) file of a certain size.
I'm doing it the way below, but it is rather slow -- any ideas on a
quicker way?

  File.open("tmp.txt", 'w') { |f| 10.megabytes.times { f.write "a" } }

Thanks!

~ Mark
--

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

ara.t.howard | 16 May 00:24
Picon
Gravatar

Re: Create an empty file of certain size


On May 15, 2008, at 4:09 PM, Mark Dodwell wrote:

> Hi,
>
> I need to create an empty (or at least garbage) file of a certain  
> size.
> I'm doing it the way below, but it is rather slow -- any ideas on a
> quicker way?
>
>  File.open("tmp.txt", 'w') { |f| 10.megabytes.times { f.write "a" } }
>
> Thanks!
>
> ~ Mark

fd.truncate( 2 ** 20 )

a @ http://codeforpeople.com/
--
we can deny everything, except that we have the possibility of being  
better. simply reflect on that.
h.h. the 14th dalai lama

Mark Dodwell | 16 May 00:43
Picon
Favicon

Re: Create an empty file of certain size

> fd.truncate( 2 ** 20 )

Thanks that's great, didn't know about that method!
--

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

Robert Klemme | 16 May 09:22

Re: Create an empty file of certain size

2008/5/16 Mark Dodwell <seo <at> mkdynamic.co.uk>:
>> fd.truncate( 2 ** 20 )
>
> Thanks that's great, didn't know about that method!

If it does not work on your platform, you can speed up your solution
by writing larger chunks:

BUFFER = ("a" * 1024).freeze
File.open("tmp.txt", 'wb') { |f| 10.kilobytes.times { f.write BUFFER } }

Kind regards

robert

--

-- 
use.inject do |as, often| as.you_can - without end

Heesob Park | 16 May 09:49
Picon

Re: Create an empty file of certain size

Robert Klemme wrote:
> 2008/5/16 Mark Dodwell <seo <at> mkdynamic.co.uk>:
>>> fd.truncate( 2 ** 20 )
>>
>> Thanks that's great, didn't know about that method!
> 
> If it does not work on your platform, you can speed up your solution
> by writing larger chunks:
> 
> BUFFER = ("a" * 1024).freeze
> File.open("tmp.txt", 'wb') { |f| 10.kilobytes.times { f.write BUFFER } }
> 
Here is another way:

size = 2**30
File.open("tmp.txt","wb"){|f|f.seek(size-1);f.write("\0")}

Regards,

Park Heesob
--

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


Gmane