Seekable
Object Hierarchy:
Description:
`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
All known implementing classes:
Namespace: GLib
Package: gio-2.0
Content:
Methods:
Inherited Members:
All known members inherited from class GLib.Object