Функция Seek
Обновлен: Ноябрь 2007
Возвращает значение Long, указывающее текущую позицию ввода/вывода в файле, открытом при помощи функции FileOpen, или определяет позицию для следующей операции ввода/вывода в файле, открытом при помощи функции FileOpen.
Функция My обеспечивает более высокую производительность и быстродействие операций ввода и вывода, чем Seek. Дополнительные сведения см. в разделе Объект My.Computer.FileSystem.
Public Overloads Function Seek( _
ByVal FileNumber As Integer _
) As Long
' -or-
Public Overloads Sub Seek( _
ByVal FileNumber As Integer, _
ByVal Position As Long _
)
Параметры
FileNumber
Обязательно. Integer, содержащее допустимый номер файла.Position
Обязательно. Число в диапазоне от 1 до 2 147 483 647 включительно, определяющее место следующей операции ввода-вывода.
Исключения
Тип исключения |
Номер ошибки |
Условие |
---|---|---|
FileNumber не существует. |
||
Недопустимый режим файла. |
См. столбец "Номер ошибки", если выполняется обновление приложений Visual Basic 6.0, в которых используется неструктурированная обработка ошибок. (Можно сравнить номер ошибки с Свойство Number (объект Err).) Однако по возможности следует заменять такую систему управления ошибками на Обзор структурной обработки исключений в Visual Basic.
Заметки
Функция Seek возвращает значение между 1 и 2 147 483 647 (что эквивалентно 2^31 – 1) включительно.
Ниже приведены возвращаемые значения для каждого режима доступа к файлу:
Режим доступа |
Возвращаемое значение |
---|---|
Random |
Номер следующей считываемой или записываемой записи |
Binary, Input, Output, Append |
Позиция байта, в которой будет выполнена следующая операция. Первый байт в файле находится в позиции 1, второй байт в позиции 2 и т.д. |
Пример
В этом примере функция Seek используется для возвращения позиции текущего файла. В примере предполагается, что TestFile представляет собой файл, содержащий записи структуры Record.
Structure Record ' Define user-defined type.
Dim ID As Integer
Dim Name As String
End Structure
Для файлов, открытых в режимеRandom, Seek возвращает номер следующей записи.
FileOpen(1, "TESTFILE", OpenMode.Random)
Do While Not EOF(1)
WriteLine(1,Seek(1)) ' Write record number.
FileGet(1, MyRecord, -1) ' Read next record.
Loop
FileClose(1)
Для файлов, открытых в режимах, отличных от Random, Seek возвращает позицию байта, в которой произойдет следующая операция ввода-вывода. Предполагается, что TestFile — это текстовый файл, состоящий из нескольких строк.
' Report character position at beginning of each line.
Dim TextLine As String
FileOpen(1, "TESTFILE", OpenMode.Input) ' Open file for reading.
While Not EOF(1)
' Read next line.
TextLine = LineInput(1)
' Position of next line.
MsgBox(Seek(1))
End While
FileClose(1)
В этом примере используется функция Seek для установки позиции следующей операции ввода-вывода в файл. В этом примере предполагается, что People.txt представляет собой файл, содержащий записи структуры Record.
Structure TestRecord
Dim Name As String
Dim ID As Integer
End Structure
Для файлов, открытых в режимах, отличных от Random, Seek устанавливает позицию байта, в которой произойдет следующая операция ввода-вывода. Предполагается, что TestFile — это текстовый файл, состоящий из нескольких строк.
Dim someText As String = "This is a test string."
' Open file for output.
FileOpen(1, "TESTFILE", OpenMode.Input)
' Move to the third character.
Seek(1, 3)
Input(1, someText)
Console.WriteLine(someText)
FileClose(1)
Примечания для разработчиков интеллектуальных устройств
Данная функция не поддерживается.
Требования
Пространство имен: Microsoft.VisualBasic
**Модуль:**FileSystem
**Сборка:**Visual Basic (библиотека времени выполнения, в Microsoft.VisualBasic.dll)