Seekable


Object Hierarchy:

GLib.Seekable GLib.Seekable GLib.Seekable GLib.Object GLib.Object GLib.Object->GLib.Seekable

Description:

[ CCode ( type_id = "g_seekable_get_type ()" ) ]
public interface Seekable : Object

`GSeekable` is implemented by streams (implementations of [class@Gio.

InputStream] or [class@Gio.OutputStream]) that support seeking.

Seekable streams largely fall into two categories: resizable and fixed-size.

`GSeekable` on fixed-sized streams is approximately the same as POSIX [`lseek()`](man:lseek(2)) on a block device (for example: attempting to seek past the end of the device is an error). Fixed streams typically cannot be truncated.

`GSeekable` on resizable streams is approximately the same as POSIX [`lseek()`](man:lseek(2)) on a normal file. Seeking past the end and writing data will usually cause the stream to resize by introducing zero bytes.

Example: Seekable streams:

public static int main (string[] args) {
File file = File.new_for_path ("my-test.txt");
try {
// Create a file that can only be accessed by the current user:
FileIOStream ios = file.create_readwrite (FileCreateFlags.PRIVATE);

// Write content to file:
OutputStream os = ios.get_output_stream ();
os.write ("My first line\n".data);
os.write ("My second line\n".data);

// Set the file pointer to the beginning of the stream:
assert (ios.can_seek ());
ios.seek (0, SeekType.SET);

// Read content of file:
InputStream @is = ios.input_stream;
DataInputStream dis = new DataInputStream (@is);

string line;
while ((line = dis.read_line ()) != null) {
print (line);
print ("\n");
}

} catch (Error e) {
print ("Error: %s\n", e.message);
}

return 0;
}

valac --pkg gio-2.0 GLib.Seekable.vala


Namespace: GLib
Package: gio-2.0

Content:

Methods:

Inherited Members: