次の方法で共有


FileSystem.FilePutObject(Int32, Object, Int64) メソッド

定義

変数の内容をディスク上のファイルに書き込みます。 My 機能を使用すると、FilePutObject よりもファイル I/O 処理の生産性とパフォーマンスが向上します。 詳細については、「FileSystem」を参照してください。

public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

パラメーター

FileNumber
Int32

必須です。 任意の有効なファイル数。

Value
Object

必須です。 ディスクに書き込まれるデータを保持する有効な変数の名前。

RecordNumber
Int64

省略可能。 書き込みを始めるレコード番号 (Random モードのファイル) またはバイト位置 (Binary モードのファイル)。

この例では、 関数を FilePutObject 使用して、ファイルに文字列を書き込みます。

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

注釈

関数はFilePutObject、などLongIntegerShort、別の型ではなくFilePutObjectが渡された場合に、コンパイル時にあいまいさを回避するために ではなく 使用されます。

FilePutObject は、オブジェクトを記述する記述子を書き込み、読み取ります。 型を書き出 Variant す場合は、 FilePutObject が必要です。 2 番目のパラメーターに オブジェクトを使用している場合は、常に と FileGetObjectを使用FilePutObjectすることをお勧めします。

FilePutObjectは と Binary モードでのみRandom有効です。

FilePutObject を使用して書き込まれたデータは通常、FileGetObject を使用してファイルから読み込まれます。

ファイル内の最初のレコードまたはバイトは 1 番目の位置にあり、2 番目のレコードまたはバイトは 2 番目の位置にあります。 を省略RecordNumberFilePutObjectすると、最後または関数の後の次のレコードまたはバイト (または最後FileGetObjectFilePutObjectSeekの関数が指すレコードまたはバイト) が書き込まれます。

引数は StringIsFixedLength 、関数が文字列を可変長または固定長として解釈するかどうかを制御します。 FilePutObject 引数が の場合、長さ記述子は True書き込まれません。 で FilePutObjectを使用StringIsFixedLength = Trueする場合は、 でFileGetObject同じ操作を行う必要があります。また、文字列が予想される長さに初期化されていることを確認する必要もあります。

ランダム モード

モードで開かれたファイルの Random 場合は、次の規則が適用されます。

  • 書き込まれるデータの長さが関数の 句でRecordLength指定された長さより短い場合、FilePutObject後続のFileOpenレコードはレコード長境界に書き込まれます。 1 つのレコードの末尾と次のレコードの先頭の間のスペースには、ファイル バッファーの既存の内容が埋め込まれます。 埋め込みデータの量を正確に決定できないため、通常、レコードの長さを書き込むデータの長さと一致することをお勧めします。 書き込まれるデータの長さが関数の 句FileOpenRecordLength指定された長さを超える場合は、例外がスローされます。

  • 書き込まれる変数が数値型を含むオブジェクトの場合は、 FilePutObject オブジェクトの を識別する VarType 2 バイトを書き込み、変数を書き込みます。 たとえば、整数を含むオブジェクトを書き込む場合、 FilePutObject 6 バイト (オブジェクトを (Integer) としてVarType(3)識別する 2 バイトと、データを含む 4 バイトを書き込みます。 関数の パラメーターで RecordLength 指定されるレコード長は、変数の FileOpen 格納に必要な実際のバイト数より少なくとも 2 バイト大きくする必要があります。

  • 書き込まれる変数が文字列を含むオブジェクトの場合は、 FilePutObject オブジェクトの を識別する VarType(8) 2 バイト記述子、文字列の長さを示す 2 バイト記述子を書き込み、文字列データを書き込みます。 関数の パラメーターで RecordLength 指定されるレコード長は、文字列の FileOpen 実際の長さより少なくとも 4 バイト大きくする必要があります。 記述子を使用せずに文字列を配置する場合は、 パラメーターにを渡 TrueStringIsFixedLength 必要があります。読み取り先の文字列は正しい長さである必要があります。

  • 書き込まれる変数が配列の場合、関数の 句でRecordLengthFileOpen指定されるレコード長は、配列データと配列記述子の書き込みに必要なすべてのバイトの合計以上である必要があります。 記述子は、配列のランク、サイズ、各ランクの下限を指定します。 その長さは、次元数の 8 倍に 2 を加えた値です (2 + 8 * NumberOfDimensions)。

バイナリ モード

モードで開かれたファイルの Binary 場合、次を Random 除くすべてのモード規則が適用されます。

  • RecordLength関数の FileOpen 句は無効です。 FilePutObject は、すべての変数を連続してディスクに書き込みます。つまり、レコード間の埋め込みは行われません。

適用対象

こちらもご覧ください