Spec-Zone.ru › Tcl/Tk

seek

Имя

seek — Изменение позиции доступа для открытого канала

Синтаксис

seek channelId offset ?origin?

Описание

Изменяет текущую позицию доступа для channelId.

ChannelId должен быть идентификатором открытого канала, например, стандартного канала Tcl (stdin, stdout или stderr), результата вызова open или socket, или результата команды создания канала, предоставленной расширением Tcl.

Аргументы offset и origin задают позицию, в которой произойдет следующее чтение или запись для channelId. Offset должен быть целым числом (может быть отрицательным), а origin должен быть одним из следующих:

start
Новая позиция доступа будет на offset байтах от начала базового файла или устройства.
current
Новая позиция доступа будет на offset байтах от текущей позиции доступа; отрицательное offset перемещает позицию доступа назад в базовом файле или устройстве.
end
Новая позиция доступа будет на offset байтах от конца файла или устройства. Отрицательное offset помещает позицию доступа перед концом файла, а положительное offset - после конца файла.

Аргумент origin по умолчанию равен start.

Команда сбрасывает все буферизованные данные вывода для канала перед возвратом, даже если канал находится в режиме без блокировки. Она также отбрасывает любые буферизованные и непрочитанные данные ввода. Эта команда возвращает пустую строку. Возникает ошибка, если эта команда применяется к каналам, чьи базовые файлы или устройства не поддерживают перемещение.

Обратите внимание, что значения offset представляют смещение в байтах, а не в символах. Как seek, так и tell работают с байтами, а не с символами, в отличие от read.

Примеры

Прочитать файл дважды:
set f [open file.txt]
set data1 [read $f]
seek $f 0
set data2 [read $f]
close $f
# $data1 eq $data2 if the file wasn't updated

Прочитать последние 10 байт из файла:

set f [open file.data]
# This is guaranteed to work with binary data but
# may fail with other encodings...
fconfigure $f -translation binary
seek $f -10 end
set data [read $f 10]
close $f

См. также

file, open, close, gets, tell, Tcl_StandardChannels

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/seek.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/seek.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API