Object Hierarchy:

Object hierarchy for Seekable


public interface Seekable : Object

Seekable is implemented by streams (implementations of InputStream or OutputStream) that support seeking.

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

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

Seekable on resizable streams is approximately the same as POSIX lseek 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 ()); (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



Inherited Members: