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
注解
FilePutObject
如果传递类型Object
而不是另一种类型(如 Integer
、Long
、 Short
等),则使用 函数而不是 FilePut
来避免编译时出现歧义。
FilePutObject
写入和读取描述对象的描述符。 如果打算写出 Variant
类型, FilePutObject
是必需的。 如有疑问,如果将对象用于第二个参数,建议始终使用 FilePutObject
和 FileGetObject
。
FilePutObject
仅在 Random
和 Binary
模式下有效。
通常使用 FileGetObject
从文件中读取使用 FilePutObject
编写的数据。
文件中的第一条记录或字节位于位置 1,第二条记录或字节位于位置 2,依序排列。 如果省略 RecordNumber
, FilePutObject
则写入最后 FileGetObject
一个 或 FilePutObject
函数 (之后的下一个记录或字节,或者最后一 Seek
个函数) 指向的记录或字节。
参数 StringIsFixedLength
控制函数是将字符串解释为可变长度还是固定长度。 FilePutObject
当参数为 True
时,不编写长度描述符。 如果将 与 一起使用StringIsFixedLength
FilePutObject
= True
,则必须对 FileGetObject
执行相同的操作,并且还必须确保字符串已初始化为预期的长度。
随机模式
对于以 Random
模式打开的文件,以下规则适用:
如果要写入的数据的长度小于函数的
FileOpen
子句中指定的RecordLength
长度,FilePutObject
则会在记录长度边界上写入后续记录。 使用文件缓冲区的现有内容填充一条记录末尾和下一条记录开头之间的空格。 由于无法精确确定填充数据量,因此通常最好让记录长度与要写入的数据的长度相匹配。 如果要写入的数据的长度大于函数的FileOpen
子句中指定的RecordLength
长度,则会引发异常。如果要写入的变量是包含数值类型的对象,
FilePutObject
则 写入两个字节来标识VarType
对象的 ,然后写入变量。 例如,在写入包含整数的对象时,FilePutObject
将写入 6 个字节:两个字节(将对象标识为VarType(3)
(Integer
) )和 4 个包含数据的字节。 函数中的FileOpen
参数指定的RecordLength
记录长度必须至少大于存储变量所需的实际字节数的两个字节。如果要写入的变量是包含字符串的对象,
FilePutObject
则编写一个标识VarType(8)
该对象的 的双字节描述符,一个指示字符串长度的双字节描述符,然后写入字符串数据。 由 函数中的FileOpen
参数指定的RecordLength
记录长度必须至少比字符串的实际长度大四个字节。 如果要放置不带描述符的字符串,则应传递给True
StringIsFixedLength
参数,并且读取到的字符串应为正确的长度。如果写入的变量为数组,则
RecordLength
函数中FileOpen
子句指定的记录长度必须大于或等于写入数组数据和数组描述符需要的所有字节之和。 描述符指定数组的排名、大小以及每个排名的下限。 其长度等于维度数的 2 加 8 倍: (2 + 8 * numberOfDimensions) 。
二进制模式
对于以 Binary
模式打开的文件,所有 Random
模式规则均适用,但以下规则除外:
RecordLength
函数中的FileOpen
子句无效。FilePutObject
将所有变量连续写入磁盘,即不填充记录。