FileSystem.FilePutObject(Int32, Object, Int64) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將變數資料寫入磁碟檔案。 相較於 FilePutObject
,My
功能可提升檔案 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
別,例如 Integer
、Long
、 Short
等等,則會FilePutObject
使用 FilePut
函式來避免編譯時期的模棱兩可。
FilePutObject
寫入和讀取描述物件的描述項。 如果您要寫出 Variant
類型, FilePutObject
則需要 。 不確定時,如果您使用對象作為第二個參數,建議您一律使用 FilePutObject
和 FileGetObject
。
FilePutObject
只有在和 Binary
模式中Random
才有效。
使用 FilePutObject
寫入的資料,通常會透過使用 FileGetObject
從檔案讀取。
檔案中的第一筆記錄或位元組位於位置 1、第二筆記錄或位元組位於位置 2,依此類移。 如果您省略 RecordNumber
, FilePutObject
則會在最後 FileGetObject
一個 或 FilePutObject
函式之後寫入下一筆記錄或位元組, (或最後 Seek
一個函式所指向的記錄或位元組) 。
自 StringIsFixedLength
變數可控制函式將字串解譯為變數或固定長度。 FilePutObject
當自變數為 True
時,不會寫入長度描述項。 如果您搭配 FilePutObject
使用 StringIsFixedLength
= True
,則必須使用 FileGetObject
執行相同的動作,而且也必須確定字串已初始化為預期的長度。
隨機模式
針對以模式開啟的 Random
檔案,適用下列規則:
如果寫入的數據長度小於 函式 子句
FileOpen
中指定的RecordLength
長度,則FilePutObject
寫入記錄長度界限的後續記錄。 一筆記錄結尾與下一筆記錄開頭之間的空間會填補檔案緩衝區的現有內容。 由於無法精確地判斷填補數據量,因此最好讓記錄長度符合所寫入數據的長度。 如果寫入的數據長度大於函式 子句FileOpen
中指定的RecordLength
長度,則會擲回例外狀況。如果要寫入的變數是包含數值類型的物件,
FilePutObject
則寫入兩個字節來識別VarType
物件的 ,然後寫入變數。 例如,當寫入包含整數的物件時,FilePutObject
會寫入六個字節:兩個字節,將對象識別為VarType(3)
()Integer
,以及包含數據的四個字節。 函式中RecordLength
FileOpen
參數所指定的記錄長度必須至少大於儲存變數所需的實際位元元組數目。如果要寫入的變數是包含字串的物件,
FilePutObject
則寫入識別 物件的雙位元組描述元VarType(8)
、指出字元串長度的雙位元組描述元,然後寫入字元串數據。 函式中RecordLength
FileOpen
參數所指定的記錄長度必須至少四個字節大於字元串的實際長度。 如果您想要放置不含描述元的字串,您應該傳遞True
至StringIsFixedLength
參數,而您讀取的字串應該是正確的長度。如果要寫入的變數是數位,則函式中
FileOpen
子句所RecordLength
指定的記錄長度必須大於或等於寫入數位資料和陣列描述元所需的所有位元組總和。 描述項會指定陣列的順位、大小和每個順位的下限。 其長度等於 2 加上維度數目的 8 倍: (2 + 8 * NumberOfDimensions) 。
二進位模式
對於以 Binary
模式開啟的檔案,所有模式規則都會 Random
套用,但下列除外:
- 函
RecordLength
式中的FileOpen
子句沒有任何作用。FilePutObject
將所有變數連續寫入磁碟,也就是說,不會在記錄之間填補。