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 FileGetObject
y 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 laFileOpen
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 laRecordLength
cláusula de laFileOpen
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 comoVarType(3)
(Integer
) y cuatro bytes que contienen los datos. La longitud del registro especificada por elRecordLength
parámetro de laFileOpen
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 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 elRecordLength
parámetro en laFileOpen
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 pasarTrue
alStringIsFixedLength
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 laFileOpen
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 laFileOpen
función no tiene ningún efecto.FilePutObject
escribe todas las variables en disco de forma contigua, es decir, sin relleno entre registros.