[ Stream I/O | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

seek(+Stream, +Offset)

The pointer in stream Stream is offset Offset from the start of the file.
+Stream
Integer (stream number) or Atom (reserved or user-defined symbolic stream name).
+Offset
Integer or the atom end_of_file.

Description

Moves the file pointer to offset Offset from the start of the file opened. It is an error if Stream is not a stream or if Offset is not an integer or the atom end_of_file.

seek/2 seeks to the end of the file when Offset is instantiated to end_of_file.

seek/2 has no effect on the null stream, it always succeeds.

Fail Conditions

None.

Resatisfiable

No.

Exceptions

(4) instantiation fault
Either Stream or Offset is uninstantiated.
(5) type error
Offset is instantiated, but not to an integer or the atom end_of_file.
(5) type error
Stream is instantiated, but not to an atom or an integer.
(6) out of range
Offset is a negative integer or greater than the file length.
(192) illegal stream mode
Stream is in an illegal stream mode.
(193) illegal stream specification
Stream is an illegal stream specification.

Examples

Success:
      seek( 0,null). % does not modify, only succeeds

      [eclipse]: open(file1,update,s), write(s,hello),
      > seek(s,3), read(s,T), close(s).
      T = lo
      yes.

Error:
      seek( Offset,7).      (Error 4).
      seek("7", 2).         (Error 5).
      seek(7, -1).          (Error 6).
      seek( 0,input).       (Error 192).
      seek(-1, 0).          (Error 193). % does not exist



See Also

at / 2, at_eof / 1, set_stream_property / 3