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),指示发生下一个读/写操作的位置。

异常

异常类型

错误号

条件

IOException

52

FileNumber 不存在。

IOException

54

文件模式无效。

如果正在升级使用非结构化错误处理方式的 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)

智能设备开发人员说明

不支持此函数。

要求

命名空间:Microsoft.VisualBasic

**模块:**FileSystem

**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)

请参见

参考

FileGet 函数

Loc 函数

FileOpen 函数

FilePut 函数

IOException

其他资源

读取文件 (Visual Basic)

写入文件 (Visual Basic)