FileSystem.FileGetObject(Int32, Object, Int64) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
開いたディスク ファイルからデータを読み込んで変数に格納します。 My
機能を使用すると、FileGetObject
よりもファイル I/O 処理の生産性とパフォーマンスが向上します。 詳細については、「FileSystem」を参照してください。
public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)
パラメーター
- FileNumber
- Int32
必須です。 任意の有効なファイル数。
- Value
- Object
必須です。 データの読み込み先となる有効な変数名。
- RecordNumber
- Int64
省略可能。 読み込みを開始する位置の、レコード数 (Random
モードのファイル) またはバイト数 (Binary
モードのファイル)。
例
次の例では、テスト ファイルにレコードを読み取り、それを取得します。
Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)
注釈
関数はFileGetObject
、コンパイル時に、などLong
Integer
Short
、別のFileGet
型ではなく型Object
が返される場合にあいまいさを回避するために、 の代わりに使用されます。
型を書き出 Variant
す場合は、 FileGetObject
が必要です。 不明な場合は、2 番目のパラメーターに オブジェクトを使用している場合は、常に と FileGetObject
を使用FilePutObject
することをお勧めします。
FileGetObject
は および Binary
モードでのみRandom
有効です。
で読み取られた FileGetObject
データは、通常、 で FilePutObject
書き込まれます。
ファイル内の最初のレコードまたはバイトは 1 番目の位置にあり、2 番目のレコードまたはバイトは 2 番目の位置にあります。 を省略RecordNumber
FileGetObject
した場合は、最後または関数の後 (または最後FileGetObject
の関数が指す) の後にレコードまたはFilePutObject
バイトをSeek
読み取ります。
ランダム モード
モードで開かれたファイルには Random
、次の規則が適用されます。
読み取られるデータの長さが関数の 句で
RecordLength
指定された長さより短い場合は、FileGetObject
レコード長境界で後続のFileOpen
レコードを読み取ります。 1 つのレコードの末尾と次のレコードの先頭の間のスペースには、ファイル バッファーの既存の内容が埋め込まれます。 埋め込みデータの量を正確に決定できないため、レコードの長さが読み取られるデータの長さと一致することをお勧めします。読み込まれる変数が文字列の場合、既定では
FileGetObject
、文字列の長さを含む 2 バイト記述子を読み取り、変数に入るデータを読み取ります。 したがって、関数の 句でRecordLength
指定されるレコード長は、文字列の実際のFileOpen
長さより少なくとも 2 バイト大きくする必要があります。 Visual Basic 6.0 以前のバージョンでは固定長文字列がサポートされており、ファイルへの読み取り時に長さ記述子は書き込まれません。 記述子を使用せずに文字列を読み取る場合は、 パラメーターにを渡True
すStringIsFixedLength
必要があります。読み取った文字列は正しい長さである必要があります。読み込まれる変数が配列の場合、関数の パラメーターで
RecordLength
FileOpen
指定されるレコード長は、配列データと配列記述子の書き込みに必要なすべてのバイトの合計以上である必要があります。 記述子は、配列のランク、サイズ、および各ランクの下限を指定します。 長さは、2 + 8 * NumberOfDimensions の 2 + 8 倍の次元数に相当します。たとえば、次の配列宣言では、配列がディスクに書き込まれるときに 218 バイトが必要です。
Dim MyArray(4, 9) As Integer
218 バイトは、記述子の場合は 18 バイト (2 + 8 * 2)、データの場合は 100 バイト (5 * 10 * 4) として分散されます。
FileGetObject
は、要素間にパディングが存在しない点を除き、構造体の要素を個別に読み取っているかのように読み取ります。 ディスクでは、ユーザー定義型 (でFilePutObject
書き込まれた) の動的配列の前には、長さが 2 と次元数の 8 倍の記述子が付きます。2 + 8 * NumberOfDimensions。 関数のFileOpen
句でRecordLength
指定されるレコード長は、配列とその記述子を含め、個々の要素を読み取るために必要なすべてのバイトの合計以上である必要があります。 クラスは VBFixedStringAttribute 、構造体内の文字列フィールドに適用して、ディスクに書き込まれるときに文字列のサイズを示すことができます。
バイナリ モード
モードで開かれたファイルの Binary
場合、すべてのルールが適用され Random
、次の例外があります。
RecordLength
関数のFileOpen
句は効果がありません。FileGetObject
は、ディスクからすべての変数を連続して読み取ります。つまり、レコード間にパディングはありません。構造体内の配列以外の配列の場合は、
FileGetObject
データのみを読み取ります。 記述子は読み取われません。
FileGetObject
は、2 バイト長記述子を予期せずに、構造体の要素ではない可変長文字列を読み取ります。 読み取られたバイト数は、文字列に既に含まれている文字数と同じです。
重要
ファイルから読み取る場合は、ファイル名拡張子に基づいてファイルの内容を決定しないでください。 たとえば、Form1.vb という名前のファイルは Visual Basic ソース ファイルではない場合があります。
適用対象
こちらもご覧ください
.NET