## GBufferedOutputStream

GBufferedOutputStream — Buffered Output Stream

## Synopsis

    #include <gio/gio.h>

                        GBufferedOutputStream;
    GOutputStream*      g_buffered_output_stream_new        (GOutputStream *base_stream);
    GOutputStream*      g_buffered_output_stream_new_sized  (GOutputStream *base_stream,
                                                             gsize size);
    gsize               g_buffered_output_stream_get_buffer_size
                                                            (GBufferedOutputStream *stream);
    void                g_buffered_output_stream_set_buffer_size
                                                            (GBufferedOutputStream *stream,
                                                             gsize size);
    gboolean            g_buffered_output_stream_get_auto_grow
                                                            (GBufferedOutputStream *stream);
    void                g_buffered_output_stream_set_auto_grow
                                                            (GBufferedOutputStream *stream,
                                                             gboolean auto_grow);

## Object Hierarchy

      GObject
       +----GOutputStream
             +----GFilterOutputStream
                   +----GBufferedOutputStream

## Properties

      "auto-grow"                gboolean              : Read / Write
      "buffer-size"              guint                 : Read / Write / Construct

## Description

Buffered output stream implements GFilterOutputStream and provides for buffered writes.

By default, GBufferedOutputStream's buffer size is set at 4 kilobytes.

To create a buffered output stream, use `g_buffered_output_stream_new()`, or `g_buffered_output_stream_new_sized()` to specify the buffer's size at construction.

To get the size of a buffer within a buffered input stream, use `g_buffered_output_stream_get_buffer_size()`. To change the size of a buffered output stream's buffer, use `g_buffered_output_stream_set_buffer_size()`. Note that the buffer's size cannot be reduced below the size of the data within the buffer.

## Details

### GBufferedOutputStream

    typedef struct _GBufferedOutputStream GBufferedOutputStream;

An implementation of GFilterOutputStream with a sized buffer.

### g_buffered_output_stream_new ()

    GOutputStream*      g_buffered_output_stream_new        (GOutputStream *base_stream);

Creates a new buffered output stream for a base stream.

`base_stream` : | a GOutputStream.
Returns : | a GOutputStream for the given `base_stream`.

### g_buffered_output_stream_new_sized ()

    GOutputStream*      g_buffered_output_stream_new_sized  (GOutputStream *base_stream,
                                                             gsize size);

Creates a new buffered output stream with a given buffer size.

`base_stream` : | a GOutputStream.
`size` : | a gsize.
Returns : | a GOutputStream with an internal buffer set to `size`.

### g_buffered_output_stream_get_buffer_size ()

    gsize               g_buffered_output_stream_get_buffer_size
                                                            (GBufferedOutputStream *stream);

Gets the size of the buffer in the `stream`.

`stream` : | a GBufferedOutputStream.
Returns : | the current size of the buffer.

### g_buffered_output_stream_set_buffer_size ()

    void                g_buffered_output_stream_set_buffer_size
                                                            (GBufferedOutputStream *stream,
                                                             gsize size);

Sets the size of the internal buffer to `size`.

`stream` : | a GBufferedOutputStream.
`size` : | a gsize.

### g_buffered_output_stream_get_auto_grow ()

    gboolean            g_buffered_output_stream_get_auto_grow
                                                            (GBufferedOutputStream *stream);

Checks if the buffer automatically grows as data is added.

`stream` : | a GBufferedOutputStream.
Returns : | `TRUE` if the `stream`'s buffer automatically grows, `FALSE` otherwise.

### g_buffered_output_stream_set_auto_grow ()

    void                g_buffered_output_stream_set_auto_grow
                                                            (GBufferedOutputStream *stream,
                                                             gboolean auto_grow);

Sets whether or not the `stream`'s buffer should automatically grow. If `auto_grow` is true, then each write will just make the buffer larger, and you must manually flush the buffer to actually write out the data to the underlying stream.

`stream` : | a GBufferedOutputStream.
`auto_grow` : | a gboolean.

## Property Details

### The `"auto-grow"` property

      "auto-grow"                gboolean              : Read / Write

Whether the buffer should automatically grow.

Default value: FALSE

### The `"buffer-size"` property

      "buffer-size"              guint                 : Read / Write / Construct

The size of the backend buffer.

Allowed values: >= 1

Default value: 4096

## See Also

#GFilterOutputStream, GOutputStream