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

Definición

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

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

Value
Object

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

RecordNumber
Int64

Optional. Número de registro (Random archivos de modo) o número de bytes (Binary archivos de modo) en el que se inicia 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 FilePut para evitar ambigüedades en tiempo de 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 se encuentra en la posición 1, el segundo registro o byte se encuentra 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 una longitud variable o fija. FilePutObject no escribe el descriptor de longitud cuando el argumento es True. Si usa StringIsFixedLength = True con FilePutObject, debe 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, suele ser 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, FilePutObject escribe dos bytes que identifican el VarType del objeto y, a continuación, 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 de 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 lee 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 el rango 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 el disco de forma contigua, es decir, sin relleno entre registros.

Se aplica a

Consulte también