## GFileOutputStream

GFileOutputStream — File output streaming operations

## Synopsis

    #include <gio/gio.h>

                        GFileOutputStream;
    GFileInfo *         g_file_output_stream_query_info     (GFileOutputStream *stream,
                                                             char *attributes,
                                                             GCancellable *cancellable,
                                                             GError **error);
    void                g_file_output_stream_query_info_async
                                                            (GFileOutputStream *stream,
                                                             char *attributes,
                                                             int io_priority,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    GFileInfo *         g_file_output_stream_query_info_finish
                                                            (GFileOutputStream *stream,
                                                             GAsyncResult *result,
                                                             GError **error);
    char *              g_file_output_stream_get_etag       (GFileOutputStream *stream);

## Object Hierarchy

      GObject
       +----GOutputStream
             +----GFileOutputStream

## Implemented Interfaces

GFileOutputStream implements GSeekable.

## Description

GFileOutputStream provides output streams that write their content to a file.

GFileOutputStream implements GSeekable, which allows the output stream to jump to arbitrary positions in the file and to truncate the file, provided the filesystem of the file supports these operations. In addition to the generic g_seekable_ API, GFileOutputStream has its own API for seeking and positioning. To find the position of a file output stream, use `g_file_output_stream_tell()`. To find out if a file output stream supports seeking, use `g_file_output_stream_can_seek()`. To position a file output stream, use `g_file_output_stream_seek()`. To find out if a file output stream supports truncating, use `g_file_output_stream_can_truncate()`. To truncate a file output stream, use `g_file_output_stream_truncate()`.

## Details

### GFileOutputStream

    typedef struct _GFileOutputStream GFileOutputStream;

A subclass of GOutputStream for opened files. This adds a few file-specific operations and seeking and truncating.

GFileOutputStream implements GSeekable.

### g_file_output_stream_query_info ()

    GFileInfo *         g_file_output_stream_query_info     (GFileOutputStream *stream,
                                                             char *attributes,
                                                             GCancellable *cancellable,
                                                             GError **error);

Queries a file output stream for the given `attributes`. This function blocks while querying the stream. For the asynchronous version of this function, see `g_file_output_stream_query_info_async()`. While the stream is blocked, the stream will set the pending flag internally, and any other operations on the stream will fail with `G_IO_ERROR_PENDING`.

Can fail if the stream was already closed (with `error` being set to `G_IO_ERROR_CLOSED`), the stream has pending operations (with `error` being set to `G_IO_ERROR_PENDING`), or if querying info is not supported for the stream's interface (with `error` being set to `G_IO_ERROR_NOT_SUPPORTED`). In all cases of failure, `NULL` will be returned.

If `cancellable` is not `NULL`, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be set, and `NULL` will be returned.

`stream` : | a GFileOutputStream.
`attributes` : | a file attribute query string.
`cancellable` : | optional GCancellable object, `NULL` to ignore.
`error` : | a GError, `NULL` to ignore.
Returns : | a GFileInfo for the `stream`, or `NULL` on error.

### g_file_output_stream_query_info_async ()

    void                g_file_output_stream_query_info_async
                                                            (GFileOutputStream *stream,
                                                             char *attributes,
                                                             int io_priority,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Asynchronously queries the `stream` for a GFileInfo. When completed, `callback` will be called with a GAsyncResult which can be used to finish the operation with `g_file_output_stream_query_info_finish()`.

For the synchronous version of this function, see `g_file_output_stream_query_info()`.

`stream` : | a GFileOutputStream.
`attributes` : | a file attribute query string.
`io_priority` : | the I/O priority of the request.
`cancellable` : | optional GCancellable object, `NULL` to ignore.
`callback` : | callback to call when the request is satisfied
`user_data` : | the data to pass to callback function

### g_file_output_stream_query_info_finish ()

    GFileInfo *         g_file_output_stream_query_info_finish
                                                            (GFileOutputStream *stream,
                                                             GAsyncResult *result,
                                                             GError **error);

Finalizes the asynchronous query started by `g_file_output_stream_query_info_async()`.

`stream` : | a GFileOutputStream.
`result` : | a GAsyncResult.
`error` : | a GError, `NULL` to ignore.
Returns : | A GFileInfo for the finished query.

### g_file_output_stream_get_etag ()

    char *              g_file_output_stream_get_etag       (GFileOutputStream *stream);

Gets the entity tag for the file when it has been written. This must be called after the stream has been written and closed, as the etag can change while writing.

`stream` : | a GFileOutputStream.
Returns : | the entity tag for the stream.

## See Also

#GOutputStream, GDataOutputStream, GSeekable