Share via


FileSystem.FilePutObject(Int32, Object, Int64) Método

Definición

Escribe los datos de una variable en un archivo de disco. La característica My proporciona una mayor productividad y rendimiento en las operaciones de E/S de archivo que FilePutObject. Para obtener más información, vea 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)

Parámetros

FileNumber
Int32

Obligatorio. Cualquier número de archivo válido.

Value
Object

Obligatorio. Nombre válido de variable que contiene los datos escritos en disco.

RecordNumber
Int64

Opcional. Número de registro (archivos en modo Random) o número de byte (archivos en modo Binary) en el que comienza la escritura.

Ejemplos

En este ejemplo se usa la FilePutObject función para escribir una cadena en un archivo.

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

Comentarios

La FilePutObject función se usa en lugar de para evitar ambigüedades en tiempo de FilePut compilación si se pasa el tipo Object en lugar de otro tipo, como Integer, Long, Short, etc.

FilePutObject escribe y lee descriptores que describen el objeto. Si piensa escribir el Variant tipo, FilePutObject es necesario. En caso de duda, si usa un objeto para el segundo parámetro, se recomienda usar FilePutObject siempre y FileGetObject.

FilePutObject solo es válido en Random modo y Binary .

Los datos escritos con FilePutObject normalmente se leen desde un archivo mediante FileGetObject.

El primer registro o byte de un archivo está en la posición 1, el segundo registro o byte está en la posición 2, etc. Si omite RecordNumber, FilePutObject escribe el siguiente registro o byte después de la última FileGetObject función o FilePutObject (o el registro o byte al que apunta la última Seek función).

El StringIsFixedLength argumento controla si la función interpreta las cadenas como longitud variable o fija. FilePutObject no escribe el descriptor de longitud cuando el argumento es True. Si usa StringIsFixedLength = True con FilePutObject, tiene que hacer lo mismo con FileGetObjecty también debe asegurarse de que la cadena se inicializa con la longitud esperada.

Modo aleatorio

En el caso de los archivos abiertos en Random modo , se aplican las reglas siguientes:

  • Si la longitud de los datos que se escriben es menor que la longitud especificada en la RecordLength cláusula de la FileOpen función, FilePutObject escribe los registros posteriores en los límites de longitud del registro. El espacio entre el final de un registro y el inicio del siguiente registro se rellena con el contenido existente del búfer de archivos. Dado que la cantidad de datos de relleno no se puede determinar con precisión, generalmente es una buena idea que la longitud del registro coincida con la longitud de los datos que se escriben. Si la longitud de los datos que se escriben es mayor que la longitud especificada en la RecordLength cláusula de la FileOpen función, se produce una excepción.

  • Si la variable que se escribe es un objeto que contiene un tipo numérico, escribe dos bytes que identifican el VarType del objeto y, a continuación, FilePutObject escribe la variable. Por ejemplo, al escribir un objeto que contiene un entero, FilePutObject escribe seis bytes: dos bytes que identifican el objeto como VarType(3) (Integer) y cuatro bytes que contienen los datos. La longitud del registro especificada por el RecordLength parámetro de la FileOpen función debe ser al menos dos bytes mayores que el número real de bytes necesarios para almacenar la variable.

  • Si la variable que se escribe es un objeto que contiene una cadena, FilePutObject escribe un descriptor de dos bytes que identifica el VarType(8) del objeto, un descriptor de dos bytes que indica la longitud de la cadena y, a continuación, escribe los datos de cadena. La longitud del registro especificada por el RecordLength parámetro en la FileOpen función debe ser al menos cuatro bytes mayores que la longitud real de la cadena. Si desea colocar una cadena sin el descriptor, debe pasar True al StringIsFixedLength parámetro y la cadena en la que ha leído debe ser la longitud correcta.

  • Si la variable que se escribe es una matriz, la longitud del registro especificada por la RecordLength cláusula de la FileOpen función debe ser mayor o igual que la suma de todos los bytes necesarios para escribir los datos de la matriz y el descriptor de matriz. El descriptor especifica la clasificación de la matriz, el tamaño y los límites inferiores para cada clasificación. Su longitud es igual a 2 más 8 veces el número de dimensiones: (2 + 8 * NumberOfDimensions).

Modo binario

En el caso de los archivos abiertos en Binary modo , se aplican todas las Random reglas de modo, excepto:

  • La RecordLength cláusula de la FileOpen función no tiene ningún efecto. FilePutObject escribe todas las variables en disco de forma contigua, es decir, sin relleno entre registros.

Se aplica a

Consulte también