FileSystem.FilePutObject(Int32, Object, Int64) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
変数からディスク ファイルにデータを書き込みます。
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関数は、Integer、Long、Shortなどの別の型ではなく型Objectが渡される場合に、コンパイル時にあいまいさを回避するために、FilePutの代わりに使用されます。
FilePutObject は、オブジェクトを記述する記述子を書き込んで読み取ります。
Variant型を書き出す場合は、FilePutObjectが必要です。 不明な場合は、2 番目のパラメーターにオブジェクトを使用している場合は、常に FilePutObject と FileGetObjectを使用することをお勧めします。
FilePutObject は、 Random モードと Binary モードでのみ有効です。
FilePutObjectで書き込まれたデータは、通常、FileGetObjectを使用してファイルから読み取られます。
ファイルの最初のレコードまたはバイトは位置 1 になり、2 番目のレコードまたはバイトは位置 2 になります。これ以降も同様です。
RecordNumberを省略した場合、FilePutObjectは、最後のFileGetObjectまたはFilePutObject関数 (または最後のSeek関数が指すレコードまたはバイト) の後に次のレコードまたはバイトを書き込みます。
StringIsFixedLength引数は、関数が文字列を変数または固定長として解釈するかどうかを制御します。
FilePutObject 引数が Trueされている場合、長さ記述子は書き込まれません。
FilePutObjectでStringIsFixedLength = Trueを使用する場合は、FileGetObjectで同じ操作を行う必要があります。また、文字列が予想される長さに初期化されていることも確認する必要があります。
ランダム モード
Random モードで開かれたファイルには、次の規則が適用されます。
書き込まれるデータの長さが、
FileOpen関数のRecordLength句で指定された長さより小さい場合、FilePutObjectはレコード長の境界に後続のレコードを書き込みます。 1 つのレコードの末尾と次のレコードの先頭の間のスペースには、ファイル バッファーの既存の内容が埋め込まれます。 埋め込みデータの量を正確に決定できないため、通常、レコードの長さが書き込まれるデータの長さと一致するようにすることをお勧めします。 書き込まれるデータの長さが、FileOpen関数のRecordLength句で指定された長さを超える場合は、例外がスローされます。書き込まれる変数が数値型を含むオブジェクトの場合、
FilePutObjectはオブジェクトのVarTypeを識別する 2 バイトを書き込み、変数を書き込みます。 たとえば、整数を含むオブジェクトを書き込む場合、FilePutObjectは、VarType(3)(Integer) としてオブジェクトを識別する 2 バイトと、データを含む 4 バイトの 6 バイトを書き込みます。FileOpen関数のRecordLengthパラメーターで指定されるレコード長は、変数の格納に必要な実際のバイト数より少なくとも 2 バイト大きい必要があります。書き込まれる変数が文字列を含むオブジェクトの場合、
FilePutObjectは、オブジェクトのVarType(8)を識別する 2 バイト記述子、文字列の長さを示す 2 バイト記述子を書き込み、文字列データを書き込みます。FileOpen関数のRecordLengthパラメーターで指定されるレコード長は、文字列の実際の長さより少なくとも 4 バイト大きい必要があります。 記述子を含まない文字列を配置する場合は、TrueをStringIsFixedLengthパラメーターに渡し、読み取る文字列は正しい長さにする必要があります。書き込む変数が配列の場合、
FileOpen関数のRecordLength句で指定されるレコード長は、配列データと配列記述子の書き込みに必要なすべてのバイトの合計以上である必要があります。 記述子は、配列のランク、サイズ、および各ランクの下限を指定します。 その長さは、2 + 8 次元数の 8 倍に等しくなります (2 + 8 * NumberOfDimensions)。
バイナリ モード
Binary モードで開かれたファイルの場合は、次を除くすべてのRandom モードルールが適用されます。
-
FileOpen関数のRecordLength句は無効です。FilePutObjectは、すべての変数を連続してディスクに書き込みます。つまり、レコード間の埋め込みは行われません。