FileSystem.FilePutObject(Int32, Object, Int64) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Записывает значения переменных в файл на диске. Функция My обеспечивает более высокие показатели производительности и быстродействия в операциях файлового ввода-вывода в сравнении с 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
Необязательный элемент. Номер записи (файлы, открытые в режиме Random) или номер байта (файлы, открытые в режиме Binary), с которого начинается запись.
Примеры
В этом примере функция используется FilePutObject для записи строки в файл.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Комментарии
Функция FilePutObject используется вместо FilePut , чтобы избежать неоднозначности во время компиляции, если тип Object передается вместо другого типа, например Integer, Long, Shortи т. д.
FilePutObject записывает и считывает дескрипторы, описывающие объект . Если вы планируете Variant записать тип, FilePutObject является обязательным. При возникновении сомнений при использовании объекта для второго параметра рекомендуется всегда использовать FilePutObject и FileGetObject.
FilePutObject является допустимым только в Random режиме и Binary .
Данные, записанные с использованием FilePutObject, обычно считываются с помощью FileGetObject.
Первая запись или байт в файле находится в позиции 1, вторая запись или байт находится в позиции 2 и т. д. Если опустить RecordNumber, FilePutObject записывает следующую запись или байт после последней FileGetObject функции или FilePutObject (или записи или байта, на которые указывает последняя Seek функция).
Аргумент StringIsFixedLength определяет, интерпретирует ли функция строки как переменную или фиксированную длину.
FilePutObject не записывает дескриптор длины, если аргумент имеет значение True. Если вы используете StringIsFixedLength = True с FilePutObject, необходимо сделать то же самое с FileGetObject, а также убедиться, что строка инициализирована ожидаемой длиной.
Случайный режим
Для файлов, открытых в Random режиме , применяются следующие правила:
Если длина записываемых данных меньше длины, указанной в
RecordLengthпредложенииFileOpenфункции,FilePutObjectпоследующие записи записываются на границы длины записей. Пространство между концом одной записи и началом следующей записи заполняется существующим содержимым буфера файлов. Так как объем данных заполнения не может быть точно определен, обычно рекомендуется, чтобы длина записи соответствовала длине записываемых данных. Если длина записываемых данных больше длины, указанной вRecordLengthпредложенииFileOpenфункции, создается исключение.Если записываемая переменная является объектом, содержащим числовой тип, записывает два байта,
FilePutObjectидентифицирующиеVarTypeобъект , а затем записывает переменную. Например, при записи объекта, содержащего целое число,FilePutObjectзаписывает шесть байтов: два байта, которые идентифицируют объект какVarType(3)(Integer), и четыре байта, содержащие данные. Длина записи, указанная параметромRecordLengthвFileOpenфункции, должна быть по крайней мере на два байта больше фактического числа байтов, необходимых для хранения переменной.Если записываемая переменная является объектом, содержащим строку,
FilePutObjectзаписывает двухбайтовый дескриптор, определяющийVarType(8)объект , двухбайтовый дескриптор, указывающий длину строки, а затем записывает строковые данные. Длина записи, указанная параметромRecordLengthвFileOpenфункции, должна быть не менее чем на четыре байта больше фактической длины строки. Если вы хотите поместить строку без дескриптора, следует передатьTrueStringIsFixedLengthв параметр , а строка, которую вы читаете, должна иметь правильную длину.Если записываемая переменная является массивом, длина записи, указанная предложением
RecordLengthвFileOpenфункции, должна быть больше или равна сумме всех байтов, необходимых для записи данных массива и дескриптора массива. Дескриптор задает ранг массива, размер и нижние границы для каждого ранга. Его длина в 2 плюс 8 раз превышает количество измерений: (2 + 8 * NumberOfDimensions).
Двоичный режим
Для файлов, открытых в Binary режиме Random , применяются все правила режима, кроме:
- Предложение
RecordLengthв функции не имеет никакогоFileOpenдействия.FilePutObjectЗаписывает все переменные на диск непрерывно, то есть без заполнения между записями.