Seek 関数

更新 : 2007 年 11 月

FileOpen 関数で開いたファイルの現在の読み込み位置または書き込み位置を示す長整数型 (Long) の値を返します。また、FileOpen 関数で開いたファイルの、次に読み込みまたは書き込みを行う位置を設定します。

My 機能により、Seek よりも、ファイルの I/O 操作の生産性とパフォーマンスが向上します。詳細については、「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 の範囲の数。

例外

例外の種類

エラー番号

条件

IOException

52

FileNumber が存在しません。

IOException

54

ファイル モードが無効です。

非構造化エラー処理を使用する 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)

参照

参照

FileGet 関数

Loc 関数

FileOpen 関数

FilePut 関数

IOException

その他の技術情報

Visual Basic でのファイルの読み取り

Visual Basic でのファイルへの書き込み