FileSystem.FileGetObject(Int32, Object, Int64) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将数据从打开的磁盘文件读取到变量中。 此功能 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
可选。 记录编号(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 则需要。 如有疑问,如果对第二个参数使用对象,则始终建议你使用 FilePutObject 和 FileGetObject。
FileGetObject仅在模式Binary中Random有效。
读取数据 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 Integer218 字节的分布方式如下:描述符(2 + 8 * 2)的 18 个字节,数据(5 * 10 * 4) 为 100 个字节。
FileGetObject读取结构元素,就像每个元素都是单独读取的,只是元素之间没有填充。 在磁盘上,用户定义的类型(写入)FilePutObject中的动态数组以描述符为前缀,其长度等于维度数的 2 + 8 倍:2 + 8 * NumberOfDimensions。 函数中FileOpen子句指定的RecordLength记录长度必须大于或等于读取各个元素所需的所有字节的总和,包括任何数组及其描述符。 该 VBFixedStringAttribute 类可以应用于结构中的字符串字段,以指示写入磁盘时字符串的大小。
二进制模式
对于在 Binary 模式下打开的文件,所有 Random 规则均适用,但以下例外:
函数
RecordLengthFileOpen中的子句不起作用。FileGetObject从磁盘连续读取所有变量,即记录之间没有填充。对于结构中数组以外的任何数组,
FileGetObject仅读取数据。 不读取描述符。
FileGetObject 读取不是结构元素且不需要双字节长度描述符的可变长度字符串。 读取的字节数等于字符串中已有的字符数。
Important
从文件读取时,请不要根据文件扩展名决定文件的内容。 例如,名为Form1.vb的文件可能不是Visual Basic源文件。
适用于
另请参阅
- FilePut
- FileOpen(Int32, String, OpenMode, OpenAccess, OpenShare, Int32)
- Seek
- FileGet
从 Visual Basic 写入 Visual Basic