FileSystem.FilePutObject(Int32, Object, Int64) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
RecordLengthcláusula de laFileOpenfunción,FilePutObjectescribe 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 laRecordLengthcláusula de laFileOpenfunció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
VarTypedel objeto y, a continuación,FilePutObjectescribe la variable. Por ejemplo, al escribir un objeto que contiene un entero,FilePutObjectescribe seis bytes: dos bytes que identifican el objeto comoVarType(3)(Integer) y cuatro bytes que contienen los datos. La longitud del registro especificada por elRecordLengthparámetro de laFileOpenfunció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,
FilePutObjectescribe un descriptor de dos bytes que identifica elVarType(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 elRecordLengthparámetro en laFileOpenfunción debe ser al menos cuatro bytes mayores que la longitud real de la cadena. Si desea colocar una cadena sin el descriptor, debe pasarTruealStringIsFixedLengthpará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
RecordLengthcláusula de laFileOpenfunció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
RecordLengthcláusula de laFileOpenfunción no tiene ningún efecto.FilePutObjectescribe todas las variables en disco de forma contigua, es decir, sin relleno entre registros.