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

定義

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

Optional. 記錄號(Random 模式檔案)或位元組號(Binary 模式檔案),即寫入開始的起點。

範例

這個範例使用函 FilePutObject 式將字串寫入檔案。

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

備註

FilePutObject當傳遞型別Object而非其他型別Integer時,若傳遞 ,如 、 LongShort、 等,則在編譯時避免FilePut歧義。

FilePutObject 撰寫並讀取描述物件的描述詞。 如果你打算寫出 Variant 該類型 FilePutObject ,這是必須的。 若不確定,若你使用物件作為第二個參數,我們建議你始終使用 FilePutObjectFileGetObject

FilePutObjectRandom 在 和 Binary 模式中有效。

以 寫入 FilePutObject 的資料通常會從 FileGetObject檔案中讀取。

檔案中的第一個記錄或位元組位於位置 1,第二個記錄或位元組位於位置 2,依此類推。 若省略 RecordNumber,則 FilePutObject 會寫入最後 FileGetObject 一個 或 FilePutObject 函式(或最後一個函式指向 Seek 的記錄或位元組)之後的記錄或位元組。

參數 StringIsFixedLength 控制函式是將字串解釋為可變長度還是固定長度。 FilePutObject 當參數為 True時,並不會寫出長度描述子。 如果你用 StringIsFixedLength = TrueFilePutObject你也必須對 做同樣 FileGetObject的事,並且必須確保字串初始化到預期長度。

隨機模式

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

  • 若所寫資料長度小於函式子句FileOpen中指定的RecordLength長度,則FilePutObject會在記錄長度邊界寫入後續記錄。 一個記錄結束與下一個記錄起點之間的空間會填充檔案緩衝區的現有內容。 由於填充資料的數量無法精確確定,通常最好讓記錄長度與所寫資料的長度相符。 若所寫資料長度超過函式子句FileOpen中指定的RecordLength長度,則會拋出例外。

  • 如果被寫入的變數是一個包含數值型別的物件,則 FilePutObject 會寫入兩個位元組來識別該物件的 , VarType 然後寫入變數。 例如,當寫入包含整數的物件時, FilePutObject 會寫入六個位元組:兩個位元組將該物件識別為 VarType(3)Integer),以及四個位元組包含資料。 函式中參數FileOpen指定的RecordLength記錄長度必須比實際儲存變數所需的位元組數至少多兩個位元組。

  • 若所寫變數為包含字串的物件, FilePutObject 則會寫入一個兩位元組的描述符來識別該物件的 , VarType(8) 一個兩位元組的描述符表示字串長度,然後寫入字串資料。 函式參數指定的RecordLengthFileOpen記錄長度必須至少比字串實際長度長四個位元組。 如果你想放一個沒有描述符的字串,你應該把參數傳給TrueStringIsFixedLength參數,而你讀入的字串長度應該是正確的。

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

二元模式

對於在 Binary 模式中開啟的檔案,所有 Random 模式規則都適用,除了:

  • RecordLength函數中的FileOpen子句不具效力。 FilePutObject 將所有變數連續寫入磁碟,也就是說,記錄間不填充變數。

適用於

另請參閱