Boost logo

Boost Users :

Subject: Re: [Boost-users] [filesystem] how to set a file size?
From: Beman Dawes (bdawes_at_[hidden])
Date: 2009-10-16 17:22:14


Beman Dawes wrote:
> On Tue, Oct 13, 2009 at 3:26 PM, Eric Niebler <eric_at_[hidden]> wrote:
>
>> Roland Bock wrote:
>>
>>> Eric Niebler wrote:
>>>
>>>> Forgive me for the n00b-ish (and slightly offtopic) question, but is
>>>> there any way in standard C++ or in Boost.Filesystem to truncate a file to a
>>>> particular size? With std::ofstream, I can either truncate a file on open to
>>>> 0 size, or else open it in overwrite mode and scribble over it, but when I'm
>>>> done, I don't seem to have a way of saying, "The end of the file is now
>>>> *here*." Is that right? And if so, does Boost.Filesystem have an API for
>>>> this?
>>>>
>>> There are two posix functions ("truncate" and "ftruncate") which might do
>>> what you need.
>>>
>> It doesn't look like these functions exist for MSVC users. So it seems
>> there is no portable way to change the size of a file. Beman, would this
>> make a good addition to the filesystem library?
>>
>
> Yes, a truncate function would be a nice addition.
>
> It looks doable. I'll look into it further.

This has now been implemented for Boost.Filesystem V3, with the signature:

     void file_size( const path& p, uintmax_t size,
                     system::error_code& ec = throws() ); ).

See http://svn.boost.org/svn/boost/sandbox/filesystem-v3

I found the POSIX "truncate" name misleading, since on both POSIX and
Windows the file can be extended as well as truncated.

There is steady progress on V3, so I'm hoping it is ready for a beta in
a couple of weeks.

--Beman


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net