Share via


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

定義

將變數資料寫入磁碟檔案。 相較於 FilePutObjectMy 功能可提升檔案 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

備註

如果傳遞型別而非另一個型Object別,例如 IntegerLongShort等等,則會FilePutObject使用 FilePut 函式來避免編譯時期的模棱兩可。

FilePutObject 寫入和讀取描述物件的描述項。 如果您要寫出 Variant 類型, FilePutObject 則需要 。 不確定時,如果您使用對象作為第二個參數,建議您一律使用 FilePutObjectFileGetObject

FilePutObject只有在和 Binary 模式中Random才有效。

使用 FilePutObject 寫入的資料,通常會透過使用 FileGetObject 從檔案讀取。

檔案中的第一筆記錄或位元組位於位置 1、第二筆記錄或位元組位於位置 2,依此類移。 如果您省略 RecordNumberFilePutObject 則會在最後 FileGetObject 一個 或 FilePutObject 函式之後寫入下一筆記錄或位元組, (或最後 Seek 一個函式所指向的記錄或位元組) 。

StringIsFixedLength 變數可控制函式將字串解譯為變數或固定長度。 FilePutObject 當自變數為 True時,不會寫入長度描述項。 如果您搭配 FilePutObject使用 StringIsFixedLength = True ,則必須使用 FileGetObject執行相同的動作,而且也必須確定字串已初始化為預期的長度。

隨機模式

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

  • 如果寫入的數據長度小於 函式 子句FileOpen中指定的RecordLength長度,則FilePutObject寫入記錄長度界限的後續記錄。 一筆記錄結尾與下一筆記錄開頭之間的空間會填補檔案緩衝區的現有內容。 由於無法精確地判斷填補數據量,因此最好讓記錄長度符合所寫入數據的長度。 如果寫入的數據長度大於函式 子句FileOpen中指定的RecordLength長度,則會擲回例外狀況。

  • 如果要寫入的變數是包含數值類型的物件, FilePutObject 則寫入兩個字節來識別 VarType 物件的 ,然後寫入變數。 例如,當寫入包含整數的物件時, FilePutObject 會寫入六個字節:兩個字節,將對象識別為 VarType(3) () Integer ,以及包含數據的四個字節。 函式中 RecordLengthFileOpen 參數所指定的記錄長度必須至少大於儲存變數所需的實際位元元組數目。

  • 如果要寫入的變數是包含字串的物件, FilePutObject 則寫入識別 物件的雙位元組描述元 VarType(8) 、指出字元串長度的雙位元組描述元,然後寫入字元串數據。 函式中 RecordLengthFileOpen 參數所指定的記錄長度必須至少四個字節大於字元串的實際長度。 如果您想要放置不含描述元的字串,您應該傳遞 TrueStringIsFixedLength 參數,而您讀取的字串應該是正確的長度。

  • 如果要寫入的變數是數位,則函式中 FileOpen 子句所RecordLength指定的記錄長度必須大於或等於寫入數位資料和陣列描述元所需的所有位元組總和。 描述項會指定陣列的順位、大小和每個順位的下限。 其長度等於 2 加上維度數目的 8 倍: (2 + 8 * NumberOfDimensions) 。

二進位模式

對於以 Binary 模式開啟的檔案,所有模式規則都會 Random 套用,但下列除外:

  • RecordLength 式中的 FileOpen 子句沒有任何作用。 FilePutObject 將所有變數連續寫入磁碟,也就是說,不會在記錄之間填補。

適用於

另請參閱