FileSystem.FileGetObject(Int32, Object, Int64) 方法

定義

從開啟的磁碟檔案讀取資料到變數。 這個 My 功能能讓你在檔案 I/O 操作 FileGetObject中提升生產力和效能。 如需詳細資訊,請參閱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

Optional. 記錄號(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若回傳型別Object而非其他型別Integer,如 、 LongShort、 等,則用於FileGet避免編譯時產生歧義。

如果你打算寫出 Variant 該類型 FileGetObject ,這是必須的。 若不確定,若你使用物件作為第二個參數,通常建議使用 FilePutObjectFileGetObject

FileGetObjectRandom 在 和 Binary 模式中有效。

FileGetObject 讀取的資料通常以 寫入 FilePutObject

檔案中的第一個記錄或位元組位於位置 1,第二個記錄或位元組位於位置 2,依此類推。 如果你省略 RecordNumber了,則 FileGetObject 會在最後 FileGetObject 一個 或 FilePutObject 函式後(或最後一個函式指向 Seek )後讀取記錄或位元組。

隨機模式

對於以 Random 模式開啟的檔案,適用以下規則:

  • 若讀取資料長度小於函式子句FileOpen中指定的RecordLength長度,則FileGetObject會讀取記錄長度邊界上的後續記錄。 一個記錄結束與下一個記錄開始之間的空間會填充檔案緩衝區的現有內容。 由於填充資料的數量無法精確確定,最好讓記錄長度與讀取資料的長度相符。

  • 如果被讀取的變數是字串,預設 FileGetObject 會讀取包含字串長度的兩位元組描述符,然後讀取進入變數的資料。 因此,函式子句FileOpen所指定的RecordLength記錄長度必須至少比字串實際長度長兩個位元組。 Visual Basic 6.0 及更早版本支援固定長度字串,且當讀取到檔案時,長度描述符不會被寫入。 如果你想讀取沒有描述符的字串,你應該傳入TrueStringIsFixedLength參數,而你讀入的字串長度應該是正確的。

  • 若讀取變數為陣列,則函式中參數FileOpen指定的RecordLength記錄長度必須大於或等於寫入陣列資料與陣列描述符所需所有位元組的總和。 描述符指定陣列的等級、大小及每個等級的下界。 其長度等於 2 加 8 乘以維度數:2 + 8 * NumberOfDimensions。

    例如,當陣列寫入磁碟時,以下陣列宣告需要 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 讀取非結構元素的可變長度字串,且不期望使用兩位元組長度的描述符。 讀取的位元組數等於字串中已包含的字元數。

Important

讀取檔案時,不要根據副檔名來決定檔案內容。 例如,名為 Form1.vb 的檔案可能不是Visual Basic原始碼檔案。

適用於

另請參閱