Seek 函数
更新:2007 年 11 月
返回一个 Long 值,指定用 FileOpen 函数打开的文件中的当前读/写位置,或设置用 FileOpen 函数打开的文件中的下一个读/写操作的位置。
在文件 I/O 操作中,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 之间的数字(包括 1 和 2,147,483,647),指示发生下一个读/写操作的位置。
异常
异常类型 |
错误号 |
条件 |
---|---|---|
FileNumber 不存在。 |
||
文件模式无效。 |
如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象) 比较错误号。) 然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述 替换这种错误控制。
备注
Seek 返回一个介于 1 到 2,147,483,647(等于 2^31 - 1)之间的值(包括 1 和 2,147,483,647)。
各种文件访问模式的返回值如下:
模式 |
返回值 |
---|---|
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)
智能设备开发人员说明
不支持此函数。
要求
**模块:**FileSystem
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)